c语言实现链栈的程序,链栈的基本操作(入栈和出栈)及C语言实现完全攻略

实现过程中,链栈不需要创建头结点,增加头结点反而会增加程序的复杂性,因此链表中只需要创建一个头指针就可以了。

链栈的实现思想是:用链表头结点的一端作为栈的栈顶端,这样做的好处是当数据元素压栈或者弹栈时,直接使用头指针就可以完成,不需要增设额外的指针。

例如,用链栈实现将(’a’,’b’,’c’,’d’)四个数据元素压栈,再依次弹栈:

#include

#include

//链表结点的结构

typedef struct lineStack{

char data;

struct lineStack * next;

}lineStack;

//实现入栈操作,向链表的表头添加新增元素

lineStack* push(lineStack * stack,char a){

lineStack * line=(lineStack*)malloc(sizeof(lineStack));

line->data=a;

line->next=stack;

stack=line;

return stack;

}

//实现出栈操作

lineStack * pop(lineStack * stack){

if (stack) {

lineStack * p=stack;

stack=stack->next;

printf("弹栈元素:%c ",p->data);

if (stack) {

printf("栈顶元素:%c\n",stack->data);

}else{

printf("栈已空\n");

}

free(p);

}else{

printf("栈内没有元素");

return stack;

}

return stack;

}

int main() {

lineStack * stack=NULL;

stack=push(stack, 'a');

stack=push(stack, 'b');

stack=push(stack, 'c');

stack=push(stack, 'd');

stack=pop(stack);

stack=pop(stack);

stack=pop(stack);

stack=pop(stack);

stack=pop(stack);

return 0;

}

输出结果:

弹栈元素:d 栈顶元素:c

弹栈元素:c 栈顶元素:b

弹栈元素:b 栈顶元素:a

弹栈元素:a 栈已空

栈内没有元素

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值