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

目录

链栈上的进栈

代码实现

思路图解 

链栈上的退栈 

代码实现

思路图解 

链队上的入队列

代码实现

思路图解 


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

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

链栈上的进栈

代码实现

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

思路图解 

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

链栈上的退栈 

代码实现

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
	}
}

思路图解 

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

 

链队上的入队列

代码实现

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;                              //将新结点设为新的尾结点
}

思路图解 

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

 

你可能感兴趣的:(数据结构,学习)