严蔚敏版数据结构建立学生信息顺序栈C语言版.docxVIP

  • 7
  • 0
  • 约3.17千字
  • 约 5页
  • 2017-11-20 发布于北京
  • 举报

严蔚敏版数据结构建立学生信息顺序栈C语言版.docx

严蔚敏版数据结构建立学生信息顺序栈C语言版

#include stdio.h#include malloc.h#define STACK_INIT_SIZE 100#define STACKINCREMENT 10typedefstruct Student/*定义学生类 */{intnum;char name[20];char sex[2];int age;float grade;}stu;typedefstruct{stu *base;stu *top;intstacksize;}sqstack;sqstackInitStack()/*构造一个空栈*/{sqstack s;s.base=(stu*)malloc(STACK_INIT_SIZE*sizeof(stu));if(!s.base)printf(OVERFLOW\n);else{s.top=s.base;s.stacksize=STACK_INIT_SIZE;printf(OK\n);return s;} } void DestroyStack(sqstack *s)/*销毁栈*/ {s-base=NULL;free(s-base);printf(OK\n);}void ClearStack(sqstack *s)/*将栈清空为空栈*/ {s-top=s-base;printf(OK\n);}void StackEmpty(sqstack *s)/*若为空栈返回TRUE,否则返回FLASE*/ {if(s-base==NULL)printf(栈不存在.\n);else if(s-top==s-base)printf(TRUE\n);elseprintf(FLASE\n);}intStackLength(sqstack *s){if(s-base==NULL)return(-1);elsereturn(s-top-s-base);}stuGetTop(sqstack *s)/*返回栈顶元素 */{if(s-top==s-base)printf(ERROR\n);else{printf(OK\n);return *(s-top-1);}} void Push(sqstack *s)/*插入新元素*/ {stu *newbase; if(s-top-s-base=s-stacksize){newbase=(stu*)realloc(s-base,(s-stacksize+STACKINCREMENT)*sizeof(stu));if(!newbase)printf(OVERFLOW\n);else{s-top=s-base+s-stacksize;s-stacksize=s-stacksize+STACKINCREMENT;printf(请输入插入学生的数据\n学号:);scanf(%d,s-top-num); printf(姓名:);scanf(%s,s-top-name);printf(年龄:);scanf(%d,s-top-age);printf(性别:);scanf(%s,s-top-sex);printf(成绩:);scanf(%f,s-top-grade);s-top++;}}else{printf(请输入插入学生的数据\n学号:);scanf(%d,s-top-num); printf(姓名:);scanf(%s,s-top-name);printf(年龄:);scanf(%d,s-top-age);printf(性别:);scanf(%s,s-top-sex);printf(成绩:);scanf(%f,s-top-grade);s-top++;}}stu Pop(sqstack *s)/*删除栈顶元素,返回其值*/{stu e;if(s-top==s-base)printf(ERROR\n);else{e=*(s-top-1); s-top=s-top-1;return e;}} void display(sqstack s)/*输出函数*/ {stu *p;p=s.base;printf(***************学生信息*****************\n);printf( 学号姓名性别年龄成绩\n);for(;ps.top;p++){printf(%d\t%s\t%s\t%d\t%f\n,p-num,p-name,p-sex,p-age,p-grade);}printf(****************************************\n);}void main(){sqstack s,*q;stu e;intn,i,j;q=s;s=InitStack();printf(请输入任意键进入菜单..........\n);getchar();for(;;){printf(**

文档评论(0)

1亿VIP精品文档

相关文档