/* 链表队列操作集 */
#include<stdio.h>
#include<stdlib.h>
typedef int ElemnetType;
typedef struct Node{
ElemnetType Data;
struct Node *Next;
}*List;
typedef struct QNode{
List rear; //队尾指针始终指向单链表尾节点
List front;//队头指针始终指向单链表头节点
}*Queue;
Queue CreateQueue(); //建立队列
void Enqueue(ElemnetType ch,Queue Q);//入对列
ElemnetType TopElementOfQueue(Queue Q);//取队头元素
void DelQueue(Queue Q);//出队列
int main()
{
Queue PtrQ;
PtrQ=CreateQueue();
for(int i=0;i<10;i++){
Enqueue(i,PtrQ);
}
printf("Top %d\n", TopElementOfQueue(PtrQ));
system("pause");
return 0;
}
Queue CreateQueue()
{
Queue Q;
Q = (Queue)malloc(sizeof(struct QNode));
if(Q==NULL) return NULL;
Q->front=Q->rear=NULL;
return Q;
}
/* 无表头链表
元素ch入队,队尾插入
*/
void Enqueue(ElemnetType ch,Queue Q)
{
List temp;
temp=(List)malloc(sizeof(struct Node));
temp->Data=ch;
temp->Next=NULL;
if(Q->rear==NULL){
Q->rear=Q->front=temp;
}else{
Q->rear->Next=temp;
Q->rear=temp;
}
}
ElemnetType TopElementOfQueue(Queue Q)
{
if(Q->front!=Q->rear) //队列不为空
return Q->front->Next->Data;
}
/* 队列出队,队头删除 */
void DelQueue(Queue Q)
{
List temp;
ElemnetType ch;
if(Q->front=NULL){
printf("the Queue is empty.\n");
return;
}else{
temp=Q->front;
if(Q->front==Q->rear){
Q->front=Q->rear=NULL; //仅有一个元素
}else{
Q->front=Q->front->Next;//多个元素
}
ch=temp->Data;
free(temp);
}
}
链式队列操作集
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 本题来自程序员代码面试指南 编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek) 实现思...
- 一、数据结构之顺序表总结 1、定长顺序表 头文件sqlist.h 实现头文件函数的文件:sqlist.cpp ex...