/* 链表队列操作集 */
#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);
}
}
链式队列操作集
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 本题来自程序员代码面试指南 编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek) 实现思...
- 一、数据结构之顺序表总结 1、定长顺序表 头文件sqlist.h 实现头文件函数的文件:sqlist.cpp ex...