这道关于循环链表数据结构题用C语言怎么做啊???

假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(不设头指针),试编写相应的入队列、出队列算法。麻烦在语句后面写一下解释啊,到时候会追加悬赏... 假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(不设头指针),试编写相应的入队列、出队列算法。麻烦在语句后面写一下解释啊,到时候会追加悬赏 展开
 我来答
164zsq
推荐于2016-10-06 · TA获得超过467个赞
知道小有建树答主
回答量:486
采纳率:0%
帮助的人:441万
展开全部
代码如下
#include <stdio.h>
#include <stdlib.h>

//申明循环单链表
typedef struct node
{
int data;
struct node *next;
}queue;

void Insert(queue *&rear,int e);//插入函数
int Delque(queue *&rear,int del);//删除函数

int main()
{
queue *rear=NULL;
int e,del,ch;
do{
printf("请输入你要插入的数:\n");
scanf("%d",&e);
Insert(rear,e);
printf("插入结束(1或者0)?\n");
scanf("%d",&ch);
}while(ch==1);
do
{
printf("删除的元素为%d\n",Delque(rear,del));
printf("删除结束(1或者0)?\n");
scanf("%d",&ch);
} while (ch==1);
return 0;
}

void Insert(queue *&rear,int e)
{
queue *s,*pre;
s=(queue *)malloc(sizeof(queue));//建立新节点
s->data=e;
if(rear==NULL)//队列为空,则建立一个节点的循环队列
{
rear=s;
rear->next=s;
}
else//非空,则插入到队尾
{
pre=rear->next;//队首的地址
rear->next=s;//插入新元素
rear=s;//修改尾指针
s->next=pre;//形成循环链表
}
}

int Delque(queue *&rear,int del)
{
queue *head;
del=rear->next->data;//返回删除元素
head=rear->next;//标记表头元素
rear->next=head->next;//断链
free(head);//释放表头空间
return del;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式