Code前端首页关于Code前端联系我们

基本的栈操作——出栈、遍历、数组出栈……C语言代码代表

terry 2年前 (2023-09-27) 阅读数 65 #数据结构与算法

1。基本栈操作——出栈

如图:

栈(stack)的基本操作—出栈、遍历,数组栈…C语言代码表示

出栈操作是当栈不为空时(注意必须进行清空操作),删除栈顶元素。 ,同时向下移动顶部和下一个光标。

代码可表示为:

//Pop popLink_Stack *Pop_stack(Link_Stack *p){{ Node *temp; temp = p ->top; if (p->top == NULL) { 打印 f ("错误:堆栈为空"); else {p->顶部 = p->顶部->下一个; 免费(临时); //删除temp; p->count --;       返回p; —堆栈转换

相对来说比较复杂。由于栈的特殊性,它只允许在一端进行操作,所以我们的遍历操作总是逆序的。当堆栈不为空时,进程从顶部元素向下一次访问一个元素,直到指针指向零(即到达堆栈末尾)。

代码可表示为:

//跳过堆栈:打印堆栈中所有元素 int show_stack(Link_Stack *p){ 节点* 温度; { printf(""; ); 0; } 同时 (温度!= NULL) { printf (" %d\t", 临时->数据); temp = 临时->下一个; } "\n");返回0;}

3。快速堆栈实现——矩阵堆栈

矩阵堆栈是一种更快的模拟堆栈的方式,所谓模拟,就是说我们不使用真正的链表,而是使用数组来进行“模拟操作”。这是一种模拟式的操作,可以快速帮助我们构建代码并分析流程,相应的实现也比较方便。 。

代码如下(独立分析请参见上文):

#include#include#include # maxn 10000 //节点设计 typedef struct stack{ int 数据[最大。 ] ;int以上; }基金; stack *s= (堆栈 *)malloc(大小(堆栈)); if( s==NULL ) { printf("分配内存空间失败"); memset(s->数据,0,sizeof(s->数据)); //memset操作来自于string.h库文件,意思是整个空间的初始化 //不懂的可以查一下百度百科https: //baike.baidu.com/item/memset/4747579?fr=aladdins->top=0; //栈顶和栈底均为0(标记为空) 返回 s;} //推voidpush(stack *s,int ? //打开堆栈人口 s->data[s ->top]=0; //让其返回0 模拟未初始化 s->top--; }}//模拟打印堆栈元素voidprint_stack(堆栈 *s){ for(int n=s ->top-1;n>=0 ;n--) {                                 printf("%d\t",s->数据[n]); }printf( "\n"); //正常换行} int

main(){ stack *s=init(); int input [5]={11,22,33,44,55 }; //模拟最新5个输入数据 为了(inti=0;i

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门