链栈,自己实现一遍,但是节点存储不是整数,存储学生信息(年龄,分数,姓名)三级引用。
1、建立学生信息结构体,将data改为学生信息结构体类型。
2、循环入栈和出栈。
#include<myhead.h>
typedef struct
{int age;float score;char name[20];
}stu;
typedef struct node
{stu data;struct node *next;
}Link,*Pstu;
typedef struct
{Pstu top;Pstu next;
}Stack,*Pstack;
Pstack create()
{Pstack p=malloc(sizeof(Stack));if(p==NULL){printf("创建头结点失败\n");return NULL;}p->top=NULL;p->next=NULL;
}
int push(Pstack S)
{int e;if(S==NULL){printf("入栈失败\n");return -1;}Pstu p=malloc(sizeof(Link));printf("年龄:\t");scanf("%d",&p->data.age);printf("分数:\t");scanf("%f",&p->data.score);printf("姓名:\t");scanf("%s",p->data.name);p->next=S->next;S->next=p;S->top=p;return 0;
}
void output(Pstack S)
{Pstu t=S->next;while(t!=NULL){printf("年龄:%d\t分数:%.2f\t姓名:%s\n",t->data.age,t->data.score,t->data.name);t=t->next;}
}
int main(int argc, const char *argv[])
{Pstack S=create();//创建头结点//循环入栈int i,n;printf("请输入学生个数:");scanf("%d",&n);for(i=0;i<n;i++){push(S);}//出栈output(S);return 0;
}
代码演示