公司 备案 网站名称,台州城乡建设局网站,做网站的岗位叫什么,两个网站做反向代理文章目录1 链队定义2 链队基本操作3 代码实现1 链队定义
队列的链式存储结构简称为链队列#xff0c;它是限制仅在表头删除和表尾插入的单链表。显然仅有单链表的头指针不便于在表尾做插入操作#xff0c;为此再增加一个尾指针#xff0c;指向链表上的最后一个结点。
type…
文章目录1 链队定义2 链队基本操作3 代码实现1 链队定义
队列的链式存储结构简称为链队列它是限制仅在表头删除和表尾插入的单链表。显然仅有单链表的头指针不便于在表尾做插入操作为此再增加一个尾指针指向链表上的最后一个结点。
typedef int ElemType;
typedef struct queue {ElemType data;struct queue *next;
} *Queue;
typedef struct linkQueue {Queue front;Queue rear;
} *LinkQueue;2 链队基本操作
判断队列是否为空
int IsEmpty(LinkQueue Q)
{return Q-front Q-rear;
}入队 第一个元素进入一个空队后front和rear都指向这个元素后继的元素陆续进队队尾入rear指针始终指向最后一个进队的元素。 void EnQueue(LinkQueue Q, ElemType e)
{Queue q (Queue)malloc(sizeof(struct queue));q-data e;q-next NULL;Q-rear-next q;Q-rear q;
}出队 队头出首先进行出队判空的检查 void DeQueue(LinkQueue Q, ElemType *e)
{if (IsEmpty(Q)) {return;}Queue p Q-front-next;*e p-data;Q-front-next p-next;if (Q-rear p) {Q-rear Q-front;}free(p);
}3 代码实现
#include stdio.h
#include stdlib.h
#include time.htypedef int ElemType;
typedef struct queue {ElemType data;struct queue *next;
} *Queue;typedef struct linkQueue {Queue front;Queue rear;
} *LinkQueue;LinkQueue InitQueue(void)
{LinkQueue Q (LinkQueue)malloc(sizeof(struct linkQueue));Q-rear Q-front (Queue)malloc(sizeof(struct queue));Q-front-next NULL;return Q;
}int IsEmpty(LinkQueue Q)
{return Q-front Q-rear;
}void EnQueue(LinkQueue Q, ElemType e)
{Queue q (Queue)malloc(sizeof(struct queue));q-data e;q-next NULL;Q-rear-next q;Q-rear q;
}void DeQueue(LinkQueue Q, ElemType *e)
{if (IsEmpty(Q)) {return;}Queue p Q-front-next;*e p-data;Q-front-next p-next;if (Q-rear p) {Q-rear Q-front;}free(p);
}int main(void)
{LinkQueue Q InitQueue();ElemType e;scanf(%d, e);EnQueue(Q, e);DeQueue(Q, e);printf(%d, e);
}运行结果