目录
题目来自:《数据结构》大连理工大学出版社(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; //将新结点设为新的尾结点
}
思路图解