栈的特点是先进后出,队列的特点是先进先出,这里我将用两个队列实现一个栈
一、步骤解析
1、实现对队列的操作
typedef int LTdata;
typedef struct LTeam {
//节点结构
struct LTeam* next;
LTdata data;
}LTeam;
typedef struct Queue {
LTeam* head;//指向头结点
LTeam* tail;//指向尾结点
int size;//队列长度
}Que;//这是一个队列
//初始化
void initial(Que* qu)
{
assert(qu);
qu->head = qu->tail = NULL;
qu->size = 0;
}
//删除队列
void destory(Que* qu)
{
LTeam* node = qu->tail;
while ( qu->head)
{
LTeam* next = qu->head->next;
free(qu->head);
qu->head = next;
}
qu->head=qu->tail=NULL;
}
//增加元素在队尾
void pushlteam(Que* qu, LTdata x)
{
assert(qu);
LTeam* newnode = (LTeam*)malloc(sizeof(LTeam));
if (newnode == NULL)
{
perror("malloc error");
return;
}
newnode->data = x;
if (qu->tail == NULL)
{
newnode->next = NULL;
qu->head = qu->tail = newnode;
}
else
{
newnode->next = qu->tail->next;
qu->tail->next = newnode;
qu->tail = newnode;
}
qu->size++;
}
//删除队头元素
void poplteam(Que* qu)
{
assert(qu);
assert(!judgeempty(qu));
//LTeam* eam = qu->tail;
if (qu->tail == qu->head)
{
free(qu->tail);
qu->tail = NULL;
qu->head = NULL;
}
else
{
LTdata* next1 =qu-> head;
qu

本文介绍如何利用两个队列的特性,通过特定操作达到栈的先进后出功能。详细步骤包括队列操作的实现和栈的实现。在删除元素时,将有元素队列的前n-1个元素转移至空队列,再删除最后一个元素,从而模拟栈的行为。文章附带了实现此功能的源代码和头文件,用于测试和调试。
最低0.47元/天 解锁文章





