您的位置:首页 > 其它

栈的链式存储及其基本运算

2013-08-14 10:56 555 查看
#include <stdio.h>
#include <stdlib.h>
#define M 10

typedef struct stnode
{
char data;
struct stnode *next;
}LinkStack;

void InitStack(LinkStack *&ls)  //初始化栈
{
ls=NULL;
}

void PushStack(LinkStack *&ls,char x)//进栈
{
LinkStack *p;
p=(LinkStack *)malloc(sizeof(LinkStack));
p->data=x;
p->next=ls;
ls=p;
}

int PopStack(LinkStack *&ls,char &x)//出栈
{
LinkStack *p;
if(ls==NULL)
return 0;
else
{
p=ls;
x=p->data;
ls=p->next;
free(p);
return 1;
}
}

int GetTop(LinkStack *ls,char &x)//取栈顶元素
{
if(ls==NULL)
return 0;
else
{
x=ls->data;
return 1;
}
}

int StackEmpty(LinkStack *ls)//判断栈空
{
if(ls==NULL)
return 1;
else
return 0;
}

int main()
{
LinkStack *ls;
char e;
InitStack(ls);
printf("栈%s\n",(StackEmpty(ls)==1?"空":"不空"));
printf("a,b,c,d进栈\n");

PushStack(ls,'a');
PushStack(ls,'b');
PushStack(ls,'c');
PushStack(ls,'d');
PushStack(ls,'f');
/*
int i;
for(i=0;i<5;i++)
{
scanf("%c",&e);
PushStack(ls,e);
}
*/
printf("栈%s\n",(StackEmpty(ls)==1?"空":"不空"));
GetTop(ls,e);
printf("栈顶元素:%c\n",e);
printf("出栈次序:\n");
while(!StackEmpty(ls))
{
PopStack(ls,e);
printf("%c ",e);
}
printf("\n");
return 0;
}
不知为毛注释掉的那一行不行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: