栈
栈:先进后出,分为入栈和出栈,用顺序表(多尾插/删),而队列用链表(多头删)
栈的结构
就是一个顺序表
typedef int STDataType;
typedef struct Stack //多尾插/删,用顺序表
{
STDataType* a;
int top;
int capacity;
}ST;
栈的初始化
其初始化和顺序表一样
队列
队列:先进先出
队列的结构
typedef int QDataType;
typedef struct QueueNode //多头删,用链表
{
struct QueueNode* next;
QDataType data;
}QNode;
typedef struct Queue
{
QNode* phead;
QNode* ptail;
int size;
}Queue;
队列的初始化
// 初始化队列
void QueueInit(Queue* q)
{
assert(q);
q->phead = NULL;
q->ptail = NULL; //链表的初始化也是只有设置phead(NULL);
q->size = 0;
}
Queue q;
QueueInit(&q);
队列的销毁
// 销毁队列
void QueueDestroy(Queue* q)
{
assert(q);
QNode* cur=q->phead;
while (cur)
{
QNode* next = cur -> next;
free(cur);
cur = next;
}
q->phead = q->ptail = NULL;
q->size = 0;
}