![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/deb1f66112384cd770775dbae96fd200.png)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 100
typedef struct
{
char name[20];
float score;
}SElemType;
typedef struct stack
{
SElemType data;
struct snode *next;
}Snode,*LinkStack;
void initLinkStak(LinkStack *LS)
{
*LS=NULL;
}
int LinkStackEmpty(LinkStack LS)
{
if(LS==NULL) return 1;
else return 0;
}
int LinkStackGetTop(LinkStack LS,SElemType *e)
{
if(LS==NULL) return 0;
*e=LS->data;return 1;
}
int LinkListLength(LinkStack LS)
{
LinkStack p=LS;
int n=0;
while(p){n++;p=p->next;}
return n;
}
void Push(LinkStack *LS,SElemType e)
{
LinkStack p=(LinkStack)malloc(sizeof(Snode));
p->data=e;
p->next=*LS;*LS=p;
}
void Pop(LinkStack *LS,SElemType *e)
{
LinkStack p=*LS;
if(*LS==NULL)return 0;
*LS=(*LS)->next;
*e=p->data;
free(p);
return 1;
}
void LinkStackTraverse(LinkStack S)
{
LinkStack p=S;
if(S==NULL){printf("栈空!\n");return 0;}
while(p)
{
printf("%s %7.2f\n",p->data.name,p->data.score);
p=p->next;
}
return 1;
}
void main()
{
LinkStack LS;
SElemType e1,e2,e3,e4,etop;
strcpy(e1.name,"A");
strcpy(e2.name,"B");
strcpy(e3.name,"C");
strcpy(e4.name,"D");
e1.score=87.44;
e2.score=69.22;
e3.score=56.33;
e4.score=89.22;
initLinkStak(&LS);
Push(&LS,e1);Push(&LS,e2);Push(&LS,e3);Push(&LS,e4);
LinkStackTraverse(LS);
printf("\n");
Pop(&LS,&e1);
LinkStackTraverse(LS);
}
运行结果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/35a015203b49a259b453ea16d8e1b6d1.png)