热点
闭环思维精修创业逻辑,驱动效率跃升增长,reasoning_content:我们要求以人工智能工程师的口吻,写一个与“技术、科技”相关,关于“[点评精修创业逻辑,闭环思维驱动效率跃升式增长]”的标题需要简短精炼,30字以内直接输出标题,不要加说明nn口吻:人工智能工程师,所以可以带有技术术语或工程师视角,比如“算法”、“闭环”、“迭代”、“优化”、“效率”、“增长”等核心是“点评精修创业逻辑”和“闭环思维驱动效率跃升式增长”nn可能的标题如:“闭环逻辑优化创业效率,算法驱动增长” 但需要更精炼或者“技术闭环重塑创业逻辑,效率跃升”等nn注意:原主题中有“点评精修”,可能是指对创业逻辑进行精细打磨和点评?但“点评精修”这个词有点奇怪或许可以理解为“精修创业逻辑”通过闭环思维标题内最好包含“闭环”、“效率”、“增长”nn考虑:“闭环思维:创业逻辑精修与效率跃升” 有点长“精修创业逻辑,闭环驱动增长” 15字左右加上“AI工程师视角”可能更好?但要求以口吻,不一定要直接写“我”nn试试:“闭环算法精修创业逻辑,驱动效率跃升增长” —— 21字或者更简洁:“闭环逻辑精修,效率跃升增长” 12字但不够技术感nn作为AI工程师,可能用“系统”、“架构”、“迭代”、“优化”例如:“创业逻辑闭环优化,效率指数增长” 15字nn另一个:“精修创业逻辑环,效率跃升增长” 有点别扭nn最终决定:“闭环思维精修创业逻辑,效率跃升增长” 16字但需要突出技术感?可以加“驱动”: “闭环驱动创业逻辑精修,效率跃升增长” 18字或者“技术闭环:创业逻辑精修与效率跃升” 19字nn注意字数限制30字以内,都很安全我选择最简洁有力的:“闭环逻辑精修,驱动效率跃升增长” 16字但缺少“创业”二字?原主题有“创业逻辑”改为:“闭环精修创业逻辑,驱动效率跃升增长” 18字完美nn但“闭环精修”可能不如“闭环思维精修”也可以:“闭环思维精修创业逻辑,驱动效率跃升” 18字nn考虑到AI工程师口吻,可以稍微技术化:“算法闭环精修创业逻辑,效率跃升增长” 18字或者“迭代闭环精修创业逻辑,效率指数增长” 19字nn我认为最好的是:“闭环思维精修创业逻辑,驱动效率跃升增长” 正好20字简洁、完整nn直接输出
科技精修点评逻辑链,创业效率黄金闭环,reasoning_content:我们要求以内容战略师的口吻,写一个与“技术、科技”相关,关于[点评精修逻辑链:构建创业效率黄金闭环]的标题注意:括号内的内容似乎是主题,但要求输出标题,且简短精炼,30字以内直接输出一个标题,不要加说明nn思考:主题是“点评精修逻辑链:构建创业效率黄金闭环”,需要结合技术/科技口吻是内容战略师可能的用技术精修逻辑链,打造创业效率黄金闭环?但需要更吸引人或者:科技赋能点评逻辑链,构建创业效率闭环但注意“点评”可能是某个业务?或者“点评精修逻辑链”可能指代对评论或反馈的优化逻辑为了通用,可以写:用技术精修逻辑链,打造创业效率黄金闭环字数:15字或者更短:科技精修逻辑链,创业效率黄金闭环11字或者:技术赋能逻辑链,构建创业闭环但不够完整nn考虑到要求“与‘技术、科技’相关”,以及“内容战略师”口吻,可以更有策略性比如:科技重塑点评逻辑,创业效率闭环制胜但需要包含“精修逻辑链”和“黄金闭环”另一个:精修逻辑链的技术策略,构建创业效率黄金闭环字数超了?精修逻辑链的技术策略:8字,构建创业效率黄金闭环:10字,共18字但不够流畅nn更优:技术精修逻辑链,黄金闭环提效率12字或者:科技驱动逻辑链精修,创业效率黄金闭环13字nn注意:原主题中有“[点评精修逻辑链]”,可能“点评”是关键词,但标题中不一定非要出现,因为要求是与技术科技相关,关于这个主题可以保留“点评”吗?用户说“关于'[点评精修逻辑链:构建创业效率黄金闭环]'的标题”,所以标题应该围绕这个主题最好包含“点评精修逻辑链”或类似但也可以灵活nn最终决定:技术赋能点评精修逻辑链,构建创业效率黄金闭环字数:19字符合或者更精简:科技精修点评逻辑链,创业效率黄金闭环14字我认为这个不错nn直接输出
筑牢安全基线:赋能移动应用,护航万物智联,reasoning_content:我们要求以程序员的口吻,写一个与技术、科技相关的标题,主题是筑牢安全基线:赋能移动应用,护航万物智联新生态需要简短精炼,30字以内程序员口吻可以带点技术术语、代码风格、或者幽默比如“代码即安全”、“安全赋能移动,智联万物”等但要注意紧扣主题可以想到:安全基线筑牢,移动应用赋能,万物智联可以写成类似“安全基线,代码加固,万物智联新生态”但字数或者“筑牢安全基线,驱动移动智能,护航万物互联”但字数可能超更精炼:”安全基线赋能,移动应用护航,万物智联“或者程序员风格:”安全即服务,移动赋能,智联万物“但需要包含”筑牢安全基线“和”赋能移动应用“也可以直接:”安全基线赋能移动,万物智联新生态“ 22字再调整:”筑牢安全基线,赋能移动,智联万物“ 15字但要突出“护航”或者:”安全基线+移动赋能=万物智联新生态“ 但可能超或者用代码风格:”[安全基线].mobilize() -> 万物智联“ 但可能太抽象最好直接:”筑牢安全基线,赋能移动应用,护航万物智联“ 20字但这是三个短语程序员口吻可以加个冒号:”筑牢安全基线:赋能移动应用,护航万物智联“ 正好或者更简:”安全基线赋能移动,护航万物智联新生态“ 19字输出一个标题
16 9 月 2026, 周三

数据结构 栈的操作实例详解

说明:

    往前学习数据结构,想运行一个完整的顺序栈的程序都运行不了,因为书上给的都是一部分一部分的算法,并没有提供一个完整可运行的程序,听了实验课,自己折腾了一下,总算可以写一个比较完整的顺序栈操作的小程序,对于栈也慢慢开始有了感觉。下面我会把整个程序拆开来做说明,只要把这些代码放在一个文件中,用编译器就可以直接编译运行了。

一、实现

1.程序功能

  关于栈操作的经典程序,首当要提及进制数转换的问题,利用栈的操作,就可以十分快速地完成数的进制转换。

2.预定义、头文件导入和类型别名

    代码如下:

#include<stdio.h>
#include<stdlib.h>
#define OVERFLOW -1
#define ERROR 0
#define FALSE 0
#define TRUE 1
#define OK 1
 
typedef int ElemType;
typedef int Status;

    除了两个头文件的导入是必须的之外,下面做两点说明:

(1)其余的常量定义都是可选的,为的就是在下面的代码书写过程中可以尽量使用英文来表达程序的意思,而不是在代码的实现过程中直接使用数字,依个人喜欢,也可以直接使用数字;

(2)使用typedef做类型的别名也仅仅是为了程序中代码的意思更加清晰明了而已,实际也可以不这样使用;

3.顺序栈的定义 

   代码如下:

typedef struct{
  ElemType *elem;   //存储空间的基址
  int top;      //栈顶元素的下一个元素,简称栈顶位标
  int size;      //当前分配的存储容量,作用看入栈操作就可以知道
  int increment;   //扩容时,增加的存储容量,作用看入栈操作就可以知道
} SqStack;         //顺序栈名称

4.栈的初始化

    代码如下:

Status InitStack_Sq(SqStack &S,int size,int inc){   //接受3个参数,&S是对结构体的引用
  S.elem = (ElemType*)malloc(size*sizeof(ElemType)); //分配存储空间
  if(S.elem == NULL) return OVERFLOW;   //判断上一步分配存储空间是否成功
  S.top = 0;      //置S为空栈,S.top为0即表示栈为空栈
  S.size = size;    //栈的空间初始容量值
  S.increment = inc;  //栈的空间初始增量值(如果需要扩容)
  return OK;    //上面的执行正常,返回OK
}

5.空栈的判断

    代码如下:

Status StackEmpty_Sq(SqStack S){
  if(S.top == 0)
    return TRUE;
  else
    return FALSE;
}
//空栈的决断是,如果栈为空就返回1,否则就返回0,当然可以不这样规定;
//至于为什么要做空栈的判断,自然是有原因的,下面再看程序的代码时就可以知道了。

6.入栈

    代码如下:

Status Push_Sq(SqStack &S,ElemType e){  //将元素e压入栈,这里e只是一个形参而已
  ElemType *newbase;    //定义中间变量
  if(S.top>= S.size){    //S.top如果指向最后一个不存储元素的地址时,即S.top大于
    newbase = (ElemType*)realloc(S.elem,//等于S.size时,就表示栈满了
  (S.size + S.increment)*sizeof(ElemType)); //通过realloc动态扩容
   
  if(NULL == newbase) return OVERFLOW; //判断扩容是否成功
  S.elem = newbase;   //扩容成功后才将中间变量的值指向S.elem,防止扩容失败时,
  S.size = S.size + S.increment;   //S.elem指向一个不是原来的位置
  }
  S.elem[S.top] = e;  //将e元素入栈
  S.top++;       //使S.top加1,表示指向的是栈顶位标
  return OK;      //上面操作正常后返回1
}

7.出栈

    代码如下:

Status Pop_Sq(SqStack &S,ElemType &e){  //栈顶元素出栈,赋给元素e
  if(0 == S.top) return ERROR;  
  e = S.elem[--S.top];  //e出栈,并将S.top减1
  return OK;
}

8.进制转换的函数

    其实上面的步骤操作都是为了创建一个顺序栈和定义顺序栈的操作而已,并对可能出现的各种情况做一些相应的举措,完毕后,下面就要使用上面创建的顺序栈以及栈的操作接口了,即在数制转换函数(这里是十进制转八进制)中使用上面的操作接口,代码如下:

void Converstion(int N){
  SqStack S;
  ElemType e;
  InitStack_Sq(S,10,5);  //栈S的初始容量置为10,每次扩容容量为5
   
  while(N != 0){
    Push_Sq(S,N%8);  //将N除以8的余数入栈
    N /= 8;      //N取值为其除以8的商
  }             //理论基础为除8取余法
   
  while(StackEmpty_Sq(S) == FALSE){
    Pop_Sq(S,e);  //依次输出栈中的余数,并赋给元素e
    printf("%d",e); //打印元素
  }

9.main函数

    进制转换函数调用栈操作的接口函数,以实现在数制转换过程中栈的操作;main函数调用数制转换函数,以实现数制的转换,代码如下:

int main(void){
  printf("Enter a number:");scanf("%d",&num);
  Converstion(num);
  printf("\n");
}

二、执行

    有了上面的代码后,就可以在编译器中编译执行了,这里我是用c free 5来进行程序代码的编译:

(1)输入的数为1348时的结果:

数据结构 栈的操作实例详解

(2)输入的数为2526时的结果:

数据结构 栈的操作实例详解

三、完整的代码

    下面把代码都放在一起:

#include<stdio.h>
#include<stdlib.h>
#define OVERFLOW -1
#define ERROR 0
#define FALSE 0
#define TRUE 1
#define OK 1
 
typedef int ElemType;
typedef int Status;
 
typedef struct{
  ElemType *elem;
  int top;
  int size;
  int increment;
} SqStack;
 
Status InitStack_Sq(SqStack &S,int inc){
  S.elem = (ElemType*)malloc(size*sizeof(ElemType));
  if(S.elem == NULL) return OVERFLOW;
  S.top = 0;
  S.size = size;
  S.increment = inc;
  return OK;
}
 
Status StackEmpty_Sq(SqStack S){
  if(S.top == 0)
    return TRUE;
  else
    return FALSE;
}
 
Status Push_Sq(SqStack &S,ElemType e){
  ElemType *newbase;
  if(S.top>= S.size){
    newbase = (ElemType*)realloc(S.elem,(S.size + S.increment)*sizeof(ElemType));
   
  if(NULL == newbase) return OVERFLOW;
  S.elem = newbase;
  S.size = S.size + S.increment;
  }
  S.elem[S.top] = e;
  S.top++;
  return OK;
}
 
Status Pop_Sq(SqStack &S,ElemType &e){
  if(0 == S.top) return ERROR;
  e = S.elem[--S.top];
  return OK;
}
 
void Converstion(int N){
  SqStack S;
  ElemType e;
  InitStack_Sq(S,5);
   
  while(N != 0){
    Push_Sq(S,N%8);
    N /= 8;
  }
   
  while(StackEmpty_Sq(S) == FALSE){
    Pop_Sq(S,e);
    printf("%d",e);
  }
}
 
int main(void){
  int num;
  printf("Enter a number:");scanf("%d",&num);
  Converstion(num);
  printf("\n");
}

dawei

【声明】:乐山站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

您错过了

闭环思维精修创业逻辑,驱动效率跃升增长,reasoning_content:我们要求以人工智能工程师的口吻,写一个与“技术、科技”相关,关于“[点评精修创业逻辑,闭环思维驱动效率跃升式增长]”的标题需要简短精炼,30字以内直接输出标题,不要加说明nn口吻:人工智能工程师,所以可以带有技术术语或工程师视角,比如“算法”、“闭环”、“迭代”、“优化”、“效率”、“增长”等核心是“点评精修创业逻辑”和“闭环思维驱动效率跃升式增长”nn可能的标题如:“闭环逻辑优化创业效率,算法驱动增长” 但需要更精炼或者“技术闭环重塑创业逻辑,效率跃升”等nn注意:原主题中有“点评精修”,可能是指对创业逻辑进行精细打磨和点评?但“点评精修”这个词有点奇怪或许可以理解为“精修创业逻辑”通过闭环思维标题内最好包含“闭环”、“效率”、“增长”nn考虑:“闭环思维:创业逻辑精修与效率跃升” 有点长“精修创业逻辑,闭环驱动增长” 15字左右加上“AI工程师视角”可能更好?但要求以口吻,不一定要直接写“我”nn试试:“闭环算法精修创业逻辑,驱动效率跃升增长” —— 21字或者更简洁:“闭环逻辑精修,效率跃升增长” 12字但不够技术感nn作为AI工程师,可能用“系统”、“架构”、“迭代”、“优化”例如:“创业逻辑闭环优化,效率指数增长” 15字nn另一个:“精修创业逻辑环,效率跃升增长” 有点别扭nn最终决定:“闭环思维精修创业逻辑,效率跃升增长” 16字但需要突出技术感?可以加“驱动”: “闭环驱动创业逻辑精修,效率跃升增长” 18字或者“技术闭环:创业逻辑精修与效率跃升” 19字nn注意字数限制30字以内,都很安全我选择最简洁有力的:“闭环逻辑精修,驱动效率跃升增长” 16字但缺少“创业”二字?原主题有“创业逻辑”改为:“闭环精修创业逻辑,驱动效率跃升增长” 18字完美nn但“闭环精修”可能不如“闭环思维精修”也可以:“闭环思维精修创业逻辑,驱动效率跃升” 18字nn考虑到AI工程师口吻,可以稍微技术化:“算法闭环精修创业逻辑,效率跃升增长” 18字或者“迭代闭环精修创业逻辑,效率指数增长” 19字nn我认为最好的是:“闭环思维精修创业逻辑,驱动效率跃升增长” 正好20字简洁、完整nn直接输出

科技精修点评逻辑链,创业效率黄金闭环,reasoning_content:我们要求以内容战略师的口吻,写一个与“技术、科技”相关,关于[点评精修逻辑链:构建创业效率黄金闭环]的标题注意:括号内的内容似乎是主题,但要求输出标题,且简短精炼,30字以内直接输出一个标题,不要加说明nn思考:主题是“点评精修逻辑链:构建创业效率黄金闭环”,需要结合技术/科技口吻是内容战略师可能的用技术精修逻辑链,打造创业效率黄金闭环?但需要更吸引人或者:科技赋能点评逻辑链,构建创业效率闭环但注意“点评”可能是某个业务?或者“点评精修逻辑链”可能指代对评论或反馈的优化逻辑为了通用,可以写:用技术精修逻辑链,打造创业效率黄金闭环字数:15字或者更短:科技精修逻辑链,创业效率黄金闭环11字或者:技术赋能逻辑链,构建创业闭环但不够完整nn考虑到要求“与‘技术、科技’相关”,以及“内容战略师”口吻,可以更有策略性比如:科技重塑点评逻辑,创业效率闭环制胜但需要包含“精修逻辑链”和“黄金闭环”另一个:精修逻辑链的技术策略,构建创业效率黄金闭环字数超了?精修逻辑链的技术策略:8字,构建创业效率黄金闭环:10字,共18字但不够流畅nn更优:技术精修逻辑链,黄金闭环提效率12字或者:科技驱动逻辑链精修,创业效率黄金闭环13字nn注意:原主题中有“[点评精修逻辑链]”,可能“点评”是关键词,但标题中不一定非要出现,因为要求是与技术科技相关,关于这个主题可以保留“点评”吗?用户说“关于'[点评精修逻辑链:构建创业效率黄金闭环]'的标题”,所以标题应该围绕这个主题最好包含“点评精修逻辑链”或类似但也可以灵活nn最终决定:技术赋能点评精修逻辑链,构建创业效率黄金闭环字数:19字符合或者更精简:科技精修点评逻辑链,创业效率黄金闭环14字我认为这个不错nn直接输出