链栈
只要有足够的内存用于创建新的节点,就可以使用链式结构来创建链栈。相比使用数组来创建栈,链栈没有存储限制
创建栈
为栈创建数据结构
- 定义一个数据结构Node,包含两个成员data和next
- 定义一个top 指针并设置为NULL
struct Node{
int data;
struct Node *next;
} *top=NULL;
入栈
- 创建一个新节点并赋值newNode
- 检查栈是否为空
- 如果栈为空,设置newNode->next=NULL
- 如果不为空 设置newNode->next=top
- 使top指针指向newNode节点
void push(int value){
struct Node *newNode;
newNode=(struct Node*)malloc(sizeof(struct Node));
newNode->data=value;
if (top==NULL){
newNode->next=NULL;
}else{
newNode->next=top;
}
top=newNode;
prntf("插入成功";)
}
出栈
- 检查栈是否为空(top==NULL)
- 如果为空,异常并终止
- 如果不为空,定义一个节点temp,并设置temp=top;
- 设置top=top->next;
- 释放temp内存(free(temp))
void pop(){
if (top==NULL){
printf("栈为空");
}else{
struct Node *temp=top;
printf("从栈中删除的元素为:%d",temp->data);
top=temp->next;
free(temp);
}
}
更多内容,欢迎关注:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a6b38f4253b45fe02fe81c582e39ed59.jpeg)