c语言算法链栈的基本操作

在基于数组的栈之后,带来了链栈的基本操作
链栈就是结点进行尾插法挂载形成的栈
结点由数据域和指针域组成
同时定义一个top指针指向栈顶
代码:

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>

//实现链式栈
//结点由数据域和指针域组成

//定义结点
typedef struct node 
{
   
	int data;//数据域
	struct Node* next;//指针域
}stack_node;

//定义栈顶指针
typedef struct top
{
   
	stack_node* top;
}stack_top;

//初始化
void init(stack_top* top)
{
   
	top->top = NULL;
}

//进栈就是尾插法
void push(stack_top* top)
{
   
	int x;
	stack_node* node = NULL;
	printf("请输入入栈元素:");
	scanf_s("%d",&x);
	node = (stack_node*)malloc(sizeof(stack_node));
	node->data = x;//数据域等于输入元素
	node->next = top->top;//指针域等于栈顶指针即新结点的后继为旧结点
	top->top = node;//top指针上移
}

//出栈
int pop(stack_top* top)
{
   
	stack_node* node = NULL;
	int x;
	if (top->top == NULL)
	{
   
		return NULL;
	}
	else
	{
   
		x = (top->top)->data;//获取栈顶结点的数据值
		node = top->top;//让结点得到栈顶结点
		top->top = node->next;//top指针下移
		free(node);//释放结点
		return x;
	}
}

//判断链栈是否为空
void empty(stack_top* top)
{
   
	if (top->top == NULL)
	
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值