#include <stdlib.h>
#include <stdio.h>
typedef char DataType;
typedef struct node
{ DataType data;
struct node *next;
}LSNode; /*LSNode为链栈结点类型*/
/*---------------------------------------------------------------------------------------------------*/
/*入栈操作,。top为栈顶指针,x为待插入节点数据域的值*/
LSNode* pushls(LSNode* top,DataType x)
{
LSNode *p;
p=(LSNode*)malloc(sizeof(LSNode));
p->data=x;
p->next=top;
return p;
}
/*---------------------------------------------------------------------------------------------------*/
/*出栈操作,删除栈顶节点。top为栈顶指针*/
LSNode* popls(LSNode* top)
{
LSNode* s;
if(top){
s=top;
top=top->next;
free(s);
return top;}
}
/*---------------------------------------------------------------------------------------------------*/
/*输出中,数据元素的值,top为栈顶指针*/
void display(LSNode* top)
{
LSNode* p=top;
while (p!=NULL)
{ printf("%c ",p->data);
p=p->next;
}
}
/*---------------------------------------------------------------------------------------------------*/
void main()
{LSNode* top; /*构建一个空链栈*/
top=NULL;
LSNode* s;
/*从键盘上输入5个元素,依次并插入到链栈中(完成入栈操作)*/
for(int i=0;i<5;i++){
printf("请输入第%d个字符",i);
DataType x;
scanf("%s",&x);
top=pushls( top, x);
}
display(top); /*输出链栈中元素*/
/*连续删除链栈中的3各元素(完成出栈操作)*/
for(i=0;i<3;i++){
top=popls( top);
}
display(top);
}