严蔚敏版数据结构学生信息链栈

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

#include

typedef struct Student/*定义学生类*/ {

int num;

char name[20];

char sex[2];

int age;

float grade;

}stu;

typedef struct SNode

{

stu data;

struct SNode *next;

}*linkstack,SNode;

linkstack InitStack()/*构造一个空栈*/ {

linkstack s;

s=(linkstack)malloc(sizeof(SNode));

if(!s)

printf("ERROR\n");

else

{

s->next=NULL;

printf("OK\n");

return s;

}

}

void DestroyStack(linkstack s)/*销毁栈*/ {

linkstack p;

if(!s)

printf("ERROR\n");

else

{

while(s)

{

p=s;

s=s->next;

free(p);

}

printf("OK\n");

}

linkstack ClearStack(linkstack s)/*将栈清空*/

{

linkstack p;

if(!s)

printf("ERROR\n");

else

{

while(s->next)

{

p=s;

s=s->next;

free(p);

}

printf("OK\n");

return s;

}

}

void StackEmpty(linkstack s)/*空栈返回TRUE,否则返回FLASE*/ {

if(!s)

printf("ERROR\n");

else if(!s->next)

printf("TRUE\n");

else

printf("FLASE\n");

}

int StackLength(linkstack s)/*返回栈长度*/

{

linkstack p=s;

int i=0;

if(!s)

return -1;

else

{

while(p->next)

{

i++;

p=p->next;

}

return i;

}

}

stu GetTop(linkstack s)/*返回栈顶元素*/

if(!s->next)

printf("ERROR\n");

else

{

printf("OK\n");

return s->data;

}

}

linkstack Push(linkstack s)/*插入新元素*/

{

linkstack p;

p=(linkstack)malloc(sizeof(SNode));

if(!p)

{

printf("OVERFLOW\n");

return s;

}

else

{

printf("请输入插入学生的数据\n学号:");

scanf("%d",&p->data.num);

printf("姓名:");

scanf("%s",&p->);

printf("年龄:");

scanf("%d",&p->data.age);

printf("性别:");

scanf("%s",&p->data.sex);

printf("成绩:");

scanf("%f",&p->data.grade);

p->next=s;

s=p;

printf("OK\n");

return s;

}

}

linkstack Pop(linkstack s)/*删除栈顶元素*/

{

stu e;

linkstack p;

if(!s->next)

{

printf("ERROR\n");

return s;

}

else

{

e=s->data;

p=s;

s=s->next;

free(p);

printf("OK\n");

printf("删除的栈顶学生信息为:\n学号:%d\n姓名:%s\n性别:%s\n年龄:%d\n成绩:%f\n删除后表为:\n",e.num,,e.sex,e.age,e.grade);

return s;

}

}

void display(linkstack s)/*输出函数*/

{

linkstack p;

p=s;

printf("***************学生信息*****************\n");

printf(" 学号姓名性别年龄成绩\n");

if(p)

{

while(p->next)

{

printf("%d\t%s\t%s\t%d\t%f\n",p->data.num,p->,p->data.sex,p->data.age,p->data. grade);

p=p->next;

}

}

printf("****************************************\n");

}

void main()

{

linkstack s;

stu e;

int n,i,j;

s=InitStack();

printf("请输入任意键进入菜单..........\n");

getchar();

for(;;)

{

printf("***********************菜单******************\n");

printf(" 1.建了一个空栈\n");

printf(" 2.构建一个有关学生信息的栈\n");

相关文档
最新文档