#include <stdlib.h>
typedef struct LSNode
{
char data;
struct LSNode* next;
}LSNode,*SNode;
typedef struct LSk
{
SNode top;
}LSk,*LStack;
void InitLStack(LStack LS)
{
if(LS==NULL)
{
LS=(LStack)malloc(sizeof(LSk));
}
LS->top=NULL;
}
char Peek(LStack LS)
{
return LS->top->data;
}
void Push(LStack LS,char value)
{
SNode p;
p=(SNode)malloc(sizeof(LSNode));
p->data=value;
p->next=LS->top;
LS->top=p;
}
char Pop(LStack LS)
{
SNode p;
char res;
p=LS->top;
if(p==NULL)
return 27;
res=p->data;
LS->top=p->next;
free(p);
return res;
}
void ClearStack(LStack LS)
{
char c;
c=Pop(LS);
while(c!=27)
{
c=Pop(LS);
}
}
void Print(LStack LS)
{
SNode p;
p=LS->top;
while(p)
{
printf("%c,",p->data);
p=p->next;
}
printf("/n");
}
int main()
{
LStack ls;
char res;
ls=(LStack)malloc(sizeof(LSk));
InitLStack(ls);
res=getchar();
while(res!='/n')
{
switch(res)
{
case '#':
Pop(ls);break;
case '@':
ClearStack(ls);break;
default:
Push(ls,res);
}
res=getchar();
}
printf("Result is as follow:/n");
Print(ls);
getch();
return 0;
}
该博客使用C语言实现了栈的基本操作。定义了栈节点和栈的结构体,实现了栈的初始化、查看栈顶元素、入栈、出栈、清空栈和打印栈元素等功能。在主函数中,根据用户输入的字符对栈进行相应操作并输出结果。
8123

被折叠的 条评论
为什么被折叠?



