文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>顺序栈的基本操作 顺序栈 数据结构 C语言

顺序栈的基本操作 顺序栈 数据结构 C语言

时间:2010-09-28  来源:zhengdong_li

#include<stdio.h> #include<conio.h> #include<malloc.h> #include<stdlib.h> #include<iomanip> #include<string> #define MAXSIZE 100 typedef struct//这里是一个栈结构的声明 { int data[MAXSIZE]; int top; }SqStack; void PushStack(SqStack *S,int x)//入栈 { if(S->top==MAXSIZE-1) printf("栈已满,不能入栈\n"); else{ S->data[++S->top]=x; printf("此数据已入栈\n"); } } int Empty(SqStack *S)//判断栈空 {return(S->top==-1?1:0); } int Pop(SqStack *S,int x)//删除顺序栈S的栈顶元素,并用x返回栈顶元素 { if(Empty(S)) {printf("空栈\n"); return 0; } x=S->data[S->top]; S->top--; printf("出栈成功\n"); return x; } void pintstruct(SqStack *S,int x) { if(Empty(S)) { printf("栈空\n"); exit(0);} else {  x=S->data[S->top];       printf("%d ",x);  /*打印*/       S->top--;  /*修改栈顶指针*/   } int GetStackTop(SqStack S)//取栈顶元素 { return S.data[S.top]; } int main() { int x,flag=1,n; SqStack newStack; newStack.top=-1; 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': newStack.top=-1;                       printf("栈已置空\n");                         break; case '2':                        printf("请依次输入要入栈的元素,以输入0结束\n");                       while(flag)                     {                       scanf("%d",&x);                       if(x==0)flag=0;                       else                       PushStack(&newStack,x);                     }                       break;             case '3': printf("请输入要退栈的元素个数:");                       scanf("%d",&n);      printf("退栈的%d个元素依次为:\n",n);      while(n--)      {     printf("%d ",Pop(&newStack,x));      }      printf("\n");          printf("出栈成功!\n");                       break; case '4':  if(Empty(&newStack)){ printf("空栈\n");   }   else                        printf("栈顶元素是 %d.\n",GetStackTop(newStack));   break; case '5': if(Empty(&newStack)){ printf("空栈\n");   }  else  pintstruct(&newStack,x);      break;                       break; case '0':exit(0);   break;             default : printf("操作错误,请重新输入!\n"); break;}  }  return 0; }
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载