栈的链式储存(不存在上溢)

本文介绍了一种使用链式存储实现栈的数据结构方法,并提供了完整的C语言代码示例。通过这种方式,可以有效避免栈满(上溢)的问题,适用于动态变化的数据存储需求。

//栈的链式储存(不存在上溢)
#include<malloc.h>
#include<stdio.h>
typedef char ElemType;
struct linknode
{
ElemType data;
struct linknode *next;
};
//init a stack
void initstack(struct linknode **s)
{
*s=NULL;
}
//push
void push(struct linknode **s,ElemType x)
{
struct linknode *q;
q=(struct linknode *)malloc(sizeof(struct linknode));
q->data=x;
q->next=*s;
*s=q;//Point to the head of stack.
}
//pop
void pop(struct linknode **s)
{
struct linknode *t;
if(*s==NULL)
{
printf("The stack is empty./n");
}
else
{
t=*s;
*s=t->next;
free(t);// free the EMS memory,in case of memory leaks.
}

}
//Get the top of stack
ElemType Gettop(struct linknode **s)
{
if(*s==NULL)
{
printf("The stack is empty./n");
}
else return ((*s)->data);
}
//dispay the nodes in stack
void dispay(struct linknode **s)
{
struct linknode *q;
printf("the nodes in stack:/n");
q=*s;
while(q!=NULL)
{
printf("%5c",q->data);
q=q->next;
}
printf("/n");
}
main()
{
struct linknode s;
struct linknode *stack=&s;
initstack(&stack);
printf("Push some words into the stack./n");
push(&stack,'i');
push(&stack,'a');
dispay(&stack);
printf("Get the top of stack:%5c/n",Gettop(&stack));
printf("Pop one node,/n");
pop(&stack);
dispay(&stack);


printf("Hello/n");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值