链式栈的基本操作 链式栈队 C语言 数据结构
时间:2010-09-28 来源:zhengdong_li
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<conio.h>
typedef struct SNode
{
int data;
struct SNode *next;
}SNode,*LinkStack;
LinkStack top;
LinkStack PushStack(LinkStack top,int x)//入栈
{
LinkStack s;
s=(LinkStack)malloc(sizeof(SNode));
s->data=x;
s->next=top;
top=s;
printf("入栈成功\n");
return top;
}
LinkStack PopStack(LinkStack top)//退栈
{
LinkStack p;
if(top!=NULL)
{
p=top;
top=top->next;
return top;
free(p);
printf("退栈已完成\n");
return top;
}
else printf("空栈,无法退栈\n");
return 0;
}
int GetStackTop(LinkStack top)//取栈顶元素
{
return top->data;
}
void pintstruct(LinkStack top,int &x)
{
LinkStack S;
S=top;
printf("从栈内输出的数据是: \n");
while(S>0)
{x=S->data;
printf("数据 %d ",x); /*打印*/
S=S->next; } /*修改栈顶指针*/
printf("\n");
}
int main()
{
int x,flag=1,n;
system("color b");
printf(" *------------------------------------------*\n");
printf(" * *\n");
printf(" * 1.......置空栈 *\n");
printf(" * *\n");
printf(" * 2.......进栈 *\n");
printf(" * *\n");
printf(" * 3.......退栈 *\n");
printf(" * *\n");
printf(" * 4.......取栈顶元素 *\n");
printf(" * *\n");
printf(" * 5.......显示栈内元素 *\n");
printf(" * *\n");
printf(" * 0...........退出 *\n");
printf(" * *\n");
printf(" *------------------------------------------*\n\n");
while(1)
{
switch(getch())
{
case '1': top=NULL;
printf("栈已置空\n");
break;
case '2': printf("请依次输入要入栈的元素,以输入0结束\n");
while(flag)
{
scanf("%d",&x);
if(x==0)flag=0;
else
top=PushStack(top,x);
}
printf("数据入栈成功\n");
break;
case '3':printf("请输入要退栈的元素个数:");
scanf("%d",&n);
printf("此%d个元素出栈成功\n",n);
while(n--)
{
top=PopStack(top);
}
printf("\n");
break; case '4': if(top!=NULL) printf("栈顶元素是:%d\n",GetStackTop(top)); else printf("栈是空的,没有元素!\n"); break; case '5': if(top==NULL){ printf("空栈\n"); } else pintstruct(top,x); break; break; case '0':exit(0); break; default : printf("操作错误,请重新输入!\n"); break;} } return 0; }
break; case '4': if(top!=NULL) printf("栈顶元素是:%d\n",GetStackTop(top)); else printf("栈是空的,没有元素!\n"); break; case '5': if(top==NULL){ printf("空栈\n"); } else pintstruct(top,x); break; break; case '0':exit(0); break; default : printf("操作错误,请重新输入!\n"); break;} } return 0; }
相关阅读 更多 +