数据结构——链式队列,,,,用C语言实现

链式队列设计。要求:(1)以带头结点的单循环链表实现,并只设尾指针,不设头指针。(2)编写实现这种链式队列的初始化、入队列、出队列、取元素、判断非空函数;(3)设计一个主... 链式队列设计。要求:
(1) 以带头结点的单循环链表实现,并只设尾指针,不设头指针。
(2) 编写实现这种链式队列的初始化、入队列、出队列、取元素、判断非空函数;
(3) 设计一个主函数进行测试。
可发我邮箱726873272@qq.com 急求
展开
 我来答
丹青香不沾尘o
2012-04-20
知道答主
回答量:59
采纳率:0%
帮助的人:26.9万
展开全部
#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node *next;
};
typedef struct node Node;
int ifnull(Node *tail)
{
if(tail->next==NULL)
return 0;
return 1;
}
Node *qinit(Node *tail)
{
tail=(Node *)malloc(sizeof(Node));
tail->data=0;
tail->next=NULL;
return tail;
}
void push(Node *tail,int data)
{
if(tail==NULL)
{
perror("error!");
return;
}
Node *tmp=NULL;
if(ifnull(tail)==0)
tmp=tail;
else
tmp=(Node *)malloc(sizeof(Node));
tmp->data=data;
tmp->next=tail->next;
tail->next=tmp;
tail=tmp;
}
void pop(Node *tail)
{
if(tail==NULL)
{
perror("error!");
return;
}
if(ifnull(tail)==0)
printf("queue is empty!");
if(tail->next==tail)
{
free(tail);
tail=NULL;
return;
}
Node *tmp=tail->next;
while(1)
{
if(tmp->next==tail)
{
Node *n=tail;
tail=tmp;
tail->next=n->next;
free(n);
break;
}
tmp=tmp->next;
}
}
Node *getdata(Node *tail,int *data)
{
if(tail==NULL)
{
perror("error!");
return;
}
if(ifnull(tail)==0)
{
printf("queue is empty!");
return;
}
if(tail->next==tail)
{
*data=tail->data;
tail->data=0;
tail->next=NULL;
return tail;
}
Node *tmp=tail->next;
while(1)
{
if(tmp->next==tail)
{
Node *n=tail->next;
*data=tail->data;
free(tail);
tail=tmp;
tail->next=n;
break;
}
tmp=tmp->next;
}
return tail;
}

int main()
{
Node *tail=NULL;
tail=qinit(tail);
if(ifnull(tail))
printf("not null\n");
else
printf("is null\n");
int a[10]={0};
int i=1;
for(i=1;i<=10;i++)
push(tail,i);
for(i=0;i<10;i++)
{
tail=getdata(tail,&a[i]);
printf("%d,",a[i]);
}
printf("\n");
free(tail);
return 0;
}
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
never715
2012-04-19 · TA获得超过942个赞
知道小有建树答主
回答量:1010
采纳率:84%
帮助的人:575万
展开全部
Never_S
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式