首页 > 其他分享 >链队

链队

时间:2024-05-24 16:09:06浏览次数:14  
标签:链队 LinkQueue next tail front NULL QueueNode

链队

初始化链队

#define ElemType int

typedef struct QueueNode

{

ElemType data;

struct QueueNode *next;

}QueueNode;

typedef struct LinkQueue

{

QueueNode *front;

QueueNode *tail;

}LinkQueue;

void InitQueue(LinkQueue *Q)

{

QueueNode *s = (QueueNode *)malloc(sizeof(QueueNode));

assert(s!=NULL);

Q->front = Q->tail = s;

Q->tail->next = NULL;

}

入队

void EnQueue(LinkQueue *Q,ElemType x)

{

QueueNode *s = (QueueNode *)malloc(sizeof(QueueNode));

assert(s!=NULL);

s->data = x;

s->next = NULL;

Q->tail->next = s;

Q->tail = s;

}

得到头元素

void GetHead(LinkQueue *Q,ElemType *v)

{

if(Q->front == Q->tail)

return;

QueueNode *p = Q->front->next;

*v = p->data;

}

出队

void DeQueue(LinkQueue *Q)

{

if(Q->front == Q->tail)

{

printf("╤сапря©у\n");

}

QueueNode *q = Q->front->next;

Q->front->next = q->next;

if(q == Q->tail)

{

Q->tail = Q->front;

}

free(q);

}

获得长度

int Length(LinkQueue *Q)

{

int len = 0;

QueueNode *p = Q->front->next;

while(p!=NULL)

{

len++;

p=p->next;

}

return len;

}

清除摧毁队

void clear(LinkQueue *Q)

{

if(Q->front == Q->tail)

{

return;

}

QueueNode *p = Q->front->next;

while(p!=NULL)

{

Q->front->next = p->next;

free(p);

p = Q->front->next;

}

Q->tail = Q->front;

}

void destroyQueue(LinkQueue *Q)

{

clear(Q);

free(Q->front);

Q->front = Q->tail = NULL;

}

展示队

void ShowQueue(LinkQueue *Q)

{

QueueNode *p = Q->front->next;

while(p!=NULL)

{

printf("%d",p->data);

p=p->next;

}

printf("<:tail\n");

}

主函数

int main()

{

LinkQueue q;

InitQueue(&q);

int v;

for(int i=1;i<=10;i++)

{

EnQueue(&q,i);

}

ShowQueue(&q);

DeQueue(&q);

DeQueue(&q);

ShowQueue(&q);

GetHead(&q,&v);

printf("first:%d\n",v);

printf("length is %d\n",Length(&q));

clear(&q);

EnQueue(&q,3);

ShowQueue(&q);

return 0;

}

标签:链队,LinkQueue,next,tail,front,NULL,QueueNode
From: https://www.cnblogs.com/pengruotong/p/18172443

相关文章

  • 循环顺序队以及链队
    数据结构线性结构--队链队相关接口程序设计/******************************************************************************filename:2024-04-26_ListQueue.c*author:[email protected]*date:2024-04-26*function:实现链队的接......
  • 2008秋季-计算机软件基础-循环链队列
    /*---------------------------------------------------------Title:LinkQueue(链队列)链队列-链式存储结构的队列请先阅读教材74-77页,2.4.1-2.4.4节,队列的定义及基本运算(注意:以下程序为简化后的,仅供入门学习之用)---------------------------------------------......
  • 链队列的实现,C++代码实现
    /*链队列的实现*/#include<iostream>usingnamespacestd;/*链队列类型定义*/typedefstructQNode{structQNode*next;chardata;}QNode,*queuePtr;//结点的定义typedefstructlinkQueue{queuePtrrear;queuePtrfront;}linkQueue;//队列的定......
  • C语言模拟银行排队叫号系统(链队)
    一.队列队列是一种具有先进先出(FIFO)特性的线性数据结构,它只允许在队列的两端进行插入和删除操作。队列的一端称为队尾(rear),另一端称为队头(front)。新元素总是插入在队列的队尾,而从队列中删除元素时则总是删除队头元素。由于队列具有FIFO特性,因此队列通常用于需要按照顺序处理数据的场......
  • 链队列的操作
    链队列的基本操作:#include<iostream>#include<string.h>#include<stdio.h>usingnamespacestd;structQNode{intval;QNode*next;};structLinkQueue{QNode*front;QNode*rear;};intInitLinkQueue(LinkQueue*Q){Q......
  • 链队列
    include<iostream>usingnamespacestd;#defineOK1#defineERROR0typedefintElemType;typedefstructQNode{ ......
  • C++实现链队列相关操作代码
    #include<iostream>#include<cstdlib>usingnamespacestd;#defineMAXSIZE100#defineOK1#defineERROR0typedefintStatus;typedefintElemtype;typedefstructQno......
  • 数据结构:单链队列--队列的链式存储结构
    //测试<divstyle="margin:0px;padding:0px;font-family:punctuation,微软雅黑,Tohoma;font-size:14px;line-height:22px;">/*********************************......
  • 编写C程序,实现链队列的下列功能: 1、设计一个虚拟界面,让用户选择操作(根据提示输入数据
    编写C程序,实现链队列的下列功能: 1、设计一个虚拟界面,让用户选择操作(根据提示输入数据)2、采用模块化编程思想,编写main函数和若干子函数(实现功能)3、队列的基本功能有:......
  • 链队
    链队链队列:用链表表示的队列简称为链队列1.初始化队列1.1数据结构typedefstruct LinkQueueNode{ElemTypedata;structLinkQueueNode*next;}LinkQueueN......