#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define OK 1
typedef struct StackNode{
char data[20];
struct StackNode *next;
}StackNode,*Linkstack;
StackNode * InitStack()//初始化
{ StackNode *L;
L=(StackNode *)malloc(sizeof(StackNode));
L->next=NULL;
return L;
}
StackNode * Push(StackNode *L,char *e)//入栈
{
StackNode *p;
p=(StackNode *)malloc(sizeof(StackNode));
strcpy(p->data,e);
printf("现在里面有%s\n",p->data);
p->next=L;
L=p; //对L进行了操作,所以返回L
return L;
}
int Length(StackNode *L)//栈长
{ int i=0;
while(L->next!=NULL)
{
i++;
L=L->next;
}
return i;
}
void GetALL(StackNode *L) //输出栈内元素
{ while(L->next!=NULL)
{printf("%s",L->data);
L=L->next; }
}
StackNode * GetTop(StackNode *L) //栈顶
{
if (!L) return NULL;
else return L;
}
int main(int argc, char *argv[]) {
StackNode LN;
StackNode *L;
L=&LN;
int n;
char a[20];
printf("请输入你想进行的操作。\n");
printf("1.初始化链栈。\n");
printf("2.添加元素。\n");
printf("3.输出栈顶。\n");
printf("4.输出栈内元素个数。\n");
printf("5.输出栈内元素。\n");
while(1)
{
scanf("%d",&n);
switch(n)
{
case 1:{
L=InitStack();
printf("初始化成功。\n");
break;
}
case 2:{
printf("请输入你要添加的元素。\n");
scanf("%s",a);
L = Push(L,a);
printf("添加成功。\n");
break;
}
case 3:{
Linkstack p;
p = GetTop(L);
printf("%s",p->data);
break;
}
case 4:{
printf("输出栈内元素个数为%d",Length(L));
break;
}
case 5:{
GetALL(L);
break;
}
}
}
return 0;
}
2018-05-26链栈的实现
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 我是日记星球199号星宝宝方韩敏,正在参加日记星球21天蜕变之旅。人间四月天,我在这里播下了种子,21天养成习惯,...