//c语言
#include<stdio.h>
#include<stdlib.h>
//链表的结点定义
struct node{
int data;
struct node *next;
};
//栈
struct zhan{
int data;
struct zhan *next;
};
//尾插建表,带头结点
struct node *create_list(){
struct node *H=(struct node *)malloc(sizeof(struct node)); //申请空间
H->next=NULL; //指空
struct node *s,*r=H; //r尾指针指空
int x;
scanf("%d",&x);
while(x!=-1){
s=(struct node *)malloc(sizeof(struct node));
s->data=x;
s->next=r->next; //s指空,同 s->next=NULL
r->next=s; //s加入链表中
r=s; //尾指针后移
scanf("%d",&x);
}
return H;
}
//入栈,相当于用头插法创建链表,带头结点
struct zhan *pushstack(struct zhan *top,int x){
struct zhan *p;
p=(struct zhan *)malloc(sizeof(struct zhan));
if(p==NULL) return NULL;
p->data=x;
p->next=top->next; // p指向栈中原来的top指向结点,最初为空
to