文章详情

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

链式栈的基本操作 链式栈队 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; }
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载