65,210
社区成员
发帖
与我相关
我的任务
分享
#include"string.h"
#include"stdio.h"
#include"time.h"
#include"stdlib.h"
#define MAXSIZE 60
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -1
typedef int Status;
typedef struct std_info
{ int Num;
char Name[8];
float Score;
}ElemType;
typedef struct node
{ElemType data;
struct node *next;
}StackNode;
StackNode *Init_LinkStack(StackNode *top)
{top=NULL;
return top;
}
Status Empty_LinkStack(StackNode *top)
{return (top==NULL);}
StackNode *Push_LinkStack(StackNode *top,ElemType x)
{StackNode *p;
p=(StackNode *)malloc(sizeof(StackNode));
p->data=x;
p->next=top;
top=p;
return top;
}
StackNode *Pop_LinkStack(StackNode *top,ElemType *y)
{StackNode *p;
if (Empty_LinkStack(top))
{printf ("Stack Underflow.");
return OVERFLOW;}
else { *y=top->data;
p=top;
top=top->next;
free(p);
return OK;}
}
StackNode *Stacktop(StackNode *top,ElemType *y)
{if(Empty_LinkStack(top)) return ERROR;
*y=top->data;
printf("The Stack top is\n");
printf("num=%d,Name=%s,score=%f\n",y->data.Num,y->data.Name,y->data.Score);
return top;
}
void Print_LinkStack(StackNode *top)
{StackNode *p;
p=top;
printf("The stack is\n");
while(p!=NULL)
{printf("num=%d,name=%s,score=%f\n",p->data.Num,p->data.Name,p->data.Score);
p=p->next;
}
}
void main()
{int i,j=-1,nn;
float score;
char ss[8];
StackNode *top;
ElemType x,y;
top=Init_LinkStack(top);
while(j)
{printf("please choose operate\n");
printf("1:Push_LinkStack Operate\n");
printf("2:Pop_LinkStack Operate\n");
printf("3:Stacktop Opreate\n");
printf("0:No Opreate\n");
scanf("%d",&j);
switch(j)
{case 0:break;
case 1:top=Push_LinkStack(top,x); break;
case 2:top=Pop_LinkStack(top,&y); break;
case 3:top=Stacktop(top,&y); break;
default:printf("输入错误!,请重新输入!\n");
Print_LinkStack(top);}
}
}