这道关于循环链表数据结构题用C语言怎么做啊???
假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(不设头指针),试编写相应的入队列、出队列算法。麻烦在语句后面写一下解释啊,到时候会追加悬赏...
假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(不设头指针),试编写相应的入队列、出队列算法。麻烦在语句后面写一下解释啊,到时候会追加悬赏
展开
1个回答
展开全部
代码如下
#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;
}
#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 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询