数据结构和算法学习记录——栈和队列作业(实现链栈上的进栈、实现链栈上的退栈、实现链队上的入队列)

目录

链栈上的进栈

代码实现

思路图解 

链栈上的退栈 

代码实现

思路图解 

链队上的入队列

代码实现

思路图解 


题目来自:《数据结构》大连理工大学出版社(2019.8第一版)

链栈上的进栈

代码实现

//链栈上的进栈
void Push(LstackTp* ls, DataType x) //采用头插的方式进行进栈的操作
{
	LstackTp* p = (LstackTp*)malloc(sizeof(LstackTp)); //创建一个新结点
	p->data = x;                                       //将新结点的数据域赋上相应的数据
	p->next = ls;                                      //将新结点的指针域指向头结点
	ls = p;                                            //最后将新结点作为头结点,进栈操作完成
}

思路图解 

链栈上的退栈 

代码实现

int Pop(LstackTp* ls, DataType x) //采用头删的方式进行退栈操作
{
	LstackTp* p;                  //创建一个临时结点p
	if (ls != NULL)               //判断ls是否为空,不为空才能进行退栈操作
	{
		p = ls;                   //用结点p来记录ls
		x = p->data;
		ls = ls->next;
		free(p);                  //释放p
		return 1;				  //退栈成功返回1
	}
	else
	{
		return 0;                 //退栈失败返回0
	}
}

思路图解 

 

链队上的入队列

代码实现

void EnQueue(QueptrTp* lq, DataType x)        
{
	LqueueTp* p;
	p = (LqueueTp*)malloc(sizeof(LqueueTp));   //创建新结点p
	p->data = x;               
	p->next = NULL;                            //初始化新结点
	(lq->rear)->next = p;                      //插入尾结点的下一个位置
	lq->rear = p;                              //将新结点设为新的尾结点
}

思路图解 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值