1、1.#include #include stdlib.hconst STACK_INIT_SIZE=100; /存储空间初始分配量const STACKINCREMENT=10; /存储空间分配增量typedef struct int *base; /在构造之前和销毁之后,base的值为NULL int *top; /栈顶指针 int stacksize; /当前已分配的存储空间,以元素为单位SqStack;void InitStack(SqStack &S) /构造一个空栈S S.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int); if(!S.ba
2、se) exit(0); /存储分配失败 S.top=S.base; S.stacksize=STACK_INIT_SIZE; /cout初始化完毕endl;/InitStackvoid GetTop(SqStack S,int &e) /若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERROR if(S.top=S.base) cout此栈为空! e=*(S.top-1); coute/ coutS.stacksize)/栈满,追加存储空间 S.base=(int *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int);新分
3、配空间失败! S.top = S.base + S.stacksize; S.stacksize += STACKINCREMENT; *S.top+=e;插入元素成功/Pushvoid Pop(SqStack &S,int & /若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK; if(S.base=S.top)此栈为空栈,无法删除! e=*-S.top;删除成功!/Popvoid ClearStack(SqStack & /把S置为空栈 coutn; Stack.stacksize=n; do请选择操作: 1,进栈 2,出栈 3,查看栈顶值 4,清空栈 5,退出m; switch(m
4、) case 1: 请输入进栈值: cinz; if(i=Stack.stacksize) coutSorry!endl栈溢出!此程序将退出! exit(0); Push(Stack,z); i+; break; case 2: Pop(Stack,x);x出栈 case 3:栈顶值为: GetTop(Stack,y); case 4: ClearStack(Stack); case 5:Exit! default:输入错误!此程序将退出! /switch while(m!=5); getch();2. #include /链式栈typedef struct Stack Stack *next
5、; int data;Stack,*SLink; SLink top; int length; /构造一个空栈 S.top=NULL; /设栈顶指针的初值为空 S.length=0; /空栈中元素个数为 /在栈顶之上插入元素 e 为新的栈顶元素 SLink p; p=new Stack; /建新的结点 p-data=e;next=S.top; S.top=p; +S.length; /若栈不空,则删除S的栈顶元素,用e返回其值S.top)此栈为空栈! e=S.top-data; S.top=S.top-next;void GetTop(SqStack & /若栈不空,取栈顶元素,用e返回其值此
6、栈为空栈! / /需改正! if(i=n)/队空、入队和出队int n=0;typedef struct Q Q *next;Q,*QLink;void InitQ(QLink &q) /构造一个队列 q-next=q;/InitQvoid Push(QLink &q,int & /入队 QLink p; p=new Q;next=q-next=p; n+;void OutQ(QLink & /出队 QLink t; t=new Q; p=q; int i; for(i=0;inext-data=e) t=p- p-next=t- delete t; break; /if p=p- /for if(i=(n+1)您所输入的值不存在!/OutQvoid ClearQ(QLink &
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1