顺序栈 ╰+哭是因爲堅強的太久メ 2022-07-15 16:07 180阅读 0赞 ## 转自http://blog.sina.com.cn/s/blog\_1513d729e0102wem6.html ## ## ## ## ## ## 顺序栈的实现(利用数组实现) ## ![sg_trans.gif][]转载▼ <table style="margin:0px; padding:0px"> <tbody> <tr> <td style="margin:0px; padding:0px 10px 0px 0px; font-family:宋体; vertical-align:top"> </td> <td style="margin:0px; padding:0px; font-family:宋体; vertical-align:top; width:220px; white-space:nowrap"> </td> </tr> </tbody> </table> ## 顺序栈的实现(数组实现、C语言) ## ![顺序栈的实现(利用数组实现)][sg_trans.gif] <table style="margin:0px; padding:0px"> <tbody> <tr> <td style="margin:0px; padding:0px 10px 0px 0px; font-family:宋体; line-height:18px; vertical-align:top"> </td> <td style="margin:0px; padding:0px; font-family:宋体; line-height:18px; vertical-align:top; width:220px; white-space:nowrap"> </td> </tr> </tbody> </table> 在数据结构中,栈是一中特殊的ADT(抽象数据类型)。它的特殊性在于它的操作只能在一个位置进行,无论是入栈还是出栈。这个位置是表的末端,也叫做栈顶。栈是操作受限的线性表。栈在计算机科学中几乎无处不在,是一中非常重要的数据结构。 用数组实现栈代码简单,但是也有缺点,那就是必须提前声明一个数组的大小,并且在程序的运行过程中不能改变,这在一定程度上限制了栈的灵活性,但是却带来了更为简洁的代码。数组的下标为0我们表示栈空。 \#include \#include \#define STACK\_SIZE 100 //栈的节点声明 typedef struct Stack\{ int top; int array\[STACK\_SIZE\]; \}Stack; Stack S;//定义一个栈 //初始化一个空栈 int Init\_Stack()\{ S.top = 0;//top为0表示空栈 return 1; \} //测试是否为空栈 int IsEmpty()\{ if(S.top==0)return 1; else return 0; \} //元素e入栈 int Push(int e)\{ S.top++; S.array\[S.top\] = e; return S.top; \} //出栈,并返回该元素值 int Pop()\{ S.top--; return S.array\[S.top+1\]; \} void main()\{ int i=0,j=0; Init\_Stack(); for(;i<=5;i++)\{ Push(i); \} for(i=0;i<=5;i++)\{ j = Pop(); printf("\[%d\] ",j); \} getch(); \} 栈的基本操作实现后,我们来看下利用栈的一个小题目。编写程序,识别以@为结束符的字符序列是否为形如‘序列1&序列2’模式的字符序列。其中序列1和2都不含‘&’字符,且序列1和序列2互为逆序列。这其实就是利用栈的Pop()操作。代码如下: \#include \#include \#define STACK\_SIZE 200 \#define EleType char //栈的节点声明 typedef struct Stack\{ EleType top; EleType array\[STACK\_SIZE\]; \}Stack,\*pStack; //初始化一个空栈 int Init\_Stack(pStack S)\{ S->top = 0;//top为0表示空栈 return 1; \} //测试是否为空栈 int IsEmpty(pStack S)\{ if(S->top==0)return 1; else return 0; \} //元素e入栈 int Push(pStack S,EleType e)\{ S->top++; S->array\[S->top\] = e; return S->top; \} //出栈,并返回该元素值 EleType Pop(pStack S)\{ S->top--; return S->array\[S->top+1\]; \} void main()\{ int i=0; pStack S; char a\[\]="abc&cba@"; char b\[\]="fgh&hgf@"; S = (pStack)malloc(sizeof(Stack)); Init\_Stack(S); while(b\[i\]!='@')\{ Push(S,b\[i\]); i++; \} i=0; for(;i<=6;i++)\{ if(b\[i\]!=Pop(S))\{ printf("error"); break; \} \} if(i>6)printf("ok"); getch(); \} [sg_trans.gif]: /images/20220715/70a8304e60004af892283f21427834ed.png
相关 顺序栈 \define OK 1 \define ERROR 0 \define TRUE 1 \define FALSE 0 \define INFEASIBLE - ╰+攻爆jí腚メ/ 2022年08月25日 05:27/ 0 赞/ 163 阅读
相关 顺序栈 2016年7月23日12:43:45 顺序栈的基本运算 include <stdio.h> define STICKSIZE 100 冷不防/ 2022年07月16日 13:29/ 0 赞/ 172 阅读
相关 顺序栈 转自http://blog.sina.com.cn/s/blog\_1513d729e0102wem6.html 顺序栈的实现(利用数组实现 ╰+哭是因爲堅強的太久メ/ 2022年07月15日 16:07/ 0 赞/ 181 阅读
相关 顺序栈 对全局变量有些依赖,要改进 include <iostream> using namespace std; typedef int elemType; 以你之姓@/ 2022年07月14日 07:23/ 0 赞/ 208 阅读
相关 顺序栈 顺序栈(C++) // //Description:顺序栈 // include <iostream> include <malloc 谁借莪1个温暖的怀抱¢/ 2022年06月18日 01:56/ 0 赞/ 161 阅读
相关 顺序栈 include<stdio.h> define maxsize 6 /顺序栈的容量/ typedef struct { int 「爱情、让人受尽委屈。」/ 2022年06月16日 13:15/ 0 赞/ 171 阅读
相关 顺序栈 include<stdio.h> define MAXSIZE 100 typedef struct{ int data[MAXSIZE]; 缺乏、安全感/ 2022年06月16日 03:21/ 0 赞/ 174 阅读
相关 顺序栈 //seqstack.h include<string.h> include<malloc.h> include<limits.h> incl 傷城~/ 2022年06月03日 20:39/ 0 赞/ 171 阅读
相关 顺序栈 栈: 限定仅在表尾进行插入和删除操作的线性表。因此,对于栈来说,表尾有其特殊含义,称为栈顶,相应地,表头称为栈底。不含元素的空表称为空栈。 系统管理员/ 2022年04月22日 03:06/ 0 赞/ 209 阅读
相关 顺序栈 / @author huihut @E-mail:huihut@outlook.com @version 创建时间:2016年9月9日 蔚落/ 2021年12月18日 05:07/ 0 赞/ 269 阅读
还没有评论,来说两句吧...