以带头结点循环链表表示队列,并且只设一个指针指向队尾元素(不设头指针),编写相应的入队列,出队列算数据结构问题

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/30 15:39:29
以带头结点循环链表表示队列,并且只设一个指针指向队尾元素(不设头指针),编写相应的入队列,出队列算数据结构问题

以带头结点循环链表表示队列,并且只设一个指针指向队尾元素(不设头指针),编写相应的入队列,出队列算数据结构问题
以带头结点循环链表表示队列,并且只设一个指针指向队尾元素(不设头指针),编写相应的入队列,出队列算
数据结构问题

以带头结点循环链表表示队列,并且只设一个指针指向队尾元素(不设头指针),编写相应的入队列,出队列算数据结构问题
#include
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -1
typedef int QElemType;
typedef int status;
typedef struct QNode{
QElemType data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
status InitQueue(LinkQueue &Q)
{
Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));
if(!Q.front) exit(OVERFLOW);
Q.front->next=NULL;
return OK;
}
status DestroyQueue(LinkQueue &Q)
{
while(Q.front)
{
Q.rear=Q.front->next;
free(Q.front);
Q.front=Q.rear;
}
return OK;
}
status EnQueue(LinkQueue &Q,QElemType e)
{
QueuePtr p;
p=(QueuePtr)malloc(sizeof(QNode));
if(!p) return OVERFLOW;
p->data=e;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
return OK;
}
status DeQueue(LinkQueue &Q,QElemType &e)
{
QueuePtr p;
if(Q.front==Q.rear) return ERROR;
p=Q.front->next;
e=p->data;
Q.front->next=p->next;
if(Q.rear==p) Q.front==Q.rear;
free(p);
return OK;
}
status QueueLength(LinkQueue Q,QElemType &i)
{
QueuePtr p;
i=0;
if(Q.front==Q.rear) return ERROR;
p=Q.front->next;
while(p!=NULL)
{
i++;
p=p->next;
}
return OK;
}
status GetHead(LinkQueue Q,QElemType &e)
{
QueuePtr p;
if(Q.front==Q.rear) return ERROR;
p=Q.front->next;
e=p->data;
return OK;
}
void QueueTraverse(LinkQueue Q)
{
QueuePtr p;
int e;
p=Q.front->next;
while(p!=NULL)
{
e=p->data;
cout

以带头结点循环链表表示队列,并且只设一个指针指向队尾元素(不设头指针),编写相应的入队列,出队列算数据结构问题 循环链表表示队列,并且只设一个指针指向队尾元素结点而不设头指针,实现 队列初始化入队出队给个思路 设用一个循环链表来表示一个队列,该队列只设一个尾指针,试分别编写向循环队列插入和删除一个结点的算法 如果用一个循环数组q[0..m-1]表示队列时,该队列只有一个队列头指针front,不设队列尾指针rear,而改置计数器count用以记录队列中结点的个数.编写实现队列的基本运算:判空,入队,出队(3分)队列中 已知一个不带头结点也无头指针并且大于1的循环列表,试写一算法,删除P所指的链结点的直接前驱的结点用C语言数据结构算法写一个程序. 两个带头结点的循环单链表ha和hb,设计算法将hb链在ha合成一个带头结点的单链表hc.要求不再开辟新的空间 试编写一个算法,计算带头结点的循环单链表的长度c语言 设ha=(a1,a2,.,an)和(hb=(b1,b2,.,bm)是两个带头结点的循环单链表编写将这两个表合并为带头结点的循环单链表hc的算法. 数据结构:循环队列判断队列空满的方法循环队列判断空满有两种方法:1.另设一个标志位以区分队列空满;2.少用一个元素空间,当队头指针在队尾指针下一位时,队列为满,当队头指针与队尾 带头结点head的循环链表的尾结点tail的特点是是tail=head还是tail->next=head还是别的. 循环队列是线性结构吗线性结构的条件是:1.有且只有一个根结点.2 ,每个结点最多有一个前件,也最多有一个后件.这么看的话循环队列就不时线性结构吧 它没有根结点 循环队列 数据结构:在带头结点的単链接head中,已知指针e指向链表的某个结点,写一个算法求该结点的直接前趋结点! 已知带头结点的单链表L,指针P指向L链表中的一个结点为(非首结点、非尾结点),删除P结点的直接后继结点的语句是 ;(2)删除P结点的直接前驱结点的语句序列是 带头结点的循环链表中,尾指针为rear,则该表的指向头结点的指针是什么,指向首结点的指针是什么? 一道数据结构题目这是一个统计单链表中结点的值等于给定值x的结点数的算法,其中while循环有错,请重新编写出正确的while循环.int count ( ListNode * Ha,ElemType x ) { // Ha为不带头结点的单链表的头 关于数据结构的一道题试写一算法,将指针s指向的无头结点的单链表链接到带头结点单链表L的最后一个结点之后.函数原型使用Status ListAppend(LinkList&L,LinkList s). 设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B、C,其中B表的结点为A表中值小于零的结点