栈的特点是先进后出,队列的特点是先进先出,这里我将用两个队列实现一个栈
一、步骤解析
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