问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数据结构链队列:

发布网友 发布时间:2022-04-23 01:23

我来回答

2个回答

热心网友 时间:2023-07-21 08:47

#include<stdlib.h>
#include<stdio.h>
typedef char elem;
//这是一个线性链表,可以任意位置插入删除。如果只能从头删除,从尾插入就是队列了。你自己写两个方法吧
typedef struct node{
elem data;
struct node *next;
}node,* linklist;
//创建一个结点
int creat(linklist &l)
{
l=(linklist)malloc(sizeof(node));
l->next=NULL;
if(!l)return 0;
return 1;
}
//以l结点为头的链表长
int lenth(linklist l)
{
int j=1;
linklist getl=l;
while(getl->next)
{
getl=getl->next;
j++;
}
return j;
}
//以l结点为头,第i个结点置 e
int put(linklist l,int i,elem e)
{
int j;
linklist getl=l;
for(j=1;j<i;j++)
getl=getl->next;// find the i node
if(!getl)return 0;
getl->data=e;
return 1;
}
//以l结点为头的链表,向尾部加结点 b
int addone(linklist l,linklist b)
{
linklist cur_node=l;
//find the last node

while(cur_node->next)
{
cur_node=cur_node->next;
}

cur_node->next=b;
b->next=NULL;
return 1;
}
int insert(linklist l,int i,linklist b)
{
int j;
linklist getl=l;
linklist q;
for(j=1;j<i-1;j++)
getl=getl->next;// find the i-1 node
q=getl->next;
getl->next=b;
b->next=q;
return 1;
}
int dlt(linklist l,int i)
{
int j;
linklist getl=l;
linklist q;
for(j=1;j<i-1;j++)
getl=getl->next;// find the i-1 node
q=getl->next;//find the i node
getl->next=q->next;
free(q);
return 1;
}
int visit(linklist l)
{
linklist cur_node=l;
while(cur_node)
{
printf("%c\n",cur_node->data);
cur_node=cur_node->next;
}
return 1;
}
void main()
{
linklist ft;//a
linklist a;//b
linklist b;//c
linklist c;//i
// char *a;
// char b[10]="hello";
// a=b;
// printf("%s",a);
creat(ft);
creat(a);
creat(b);
creat(c);
put(ft,1,'a');
addone(ft,a);
put(ft,2,'b');
addone(ft,b);
put(ft,3,'c');
insert(ft,3,c);
put(ft,3,'i');
dlt(ft,2);
visit(ft);
printf("%d\n",lenth(ft));
visit(b);
printf("%d\n",lenth(b));
}
自己琢磨琢磨

热心网友 时间:2023-07-21 08:47

零时打的,没有检查的,可能有点错误,请谅解,这是调用函数:
typedef struct qnode
{
DataType date;
struct qnode *next;
}LQNode;

typedef struct
{
LQNode *front;
LQNode *rear;
}LQNode;

//初始化链表
void QueueInitiate(LQNode Q)
{
Q->rear=NULL;
Q->front=NULL;
}

//非空否
int QueueNotEmpty(LQNode Q)
{
if(Q.front==NULL)
return 0;
else
return 1;
}

//入队列
int QueueAppend(SLQNode *Q,Datatype x)
{
LQNode *p;
if((p=(LQNode *)malloc(sizeof(LQNode)))==NULL)
{
printf("内存不足\n");
return 0;
}
else
{
p->date=x;
p->next=NULL;
if(Q->rear!=NULL)
Q->rear->next=p;
Q->rear=p;
if(Q->front==NULL)
Q->front=p;
return 1;
}
}

//出队列
int QueueDelete(LQNode *Q,DataType *d)
{
LQNode *p;
if(Q->front==NULL)
{
printf("队列已空无数据出队列\n");
return 0;

}
else
{
*d=Q->front->data;
p=Q->front;
Q->front=Q->front->next;
if(Q->front==NULL)
Q->rear=NULL;
free(p);
return 1;
}
}

//取队头数据元素
int QueueGet(LQNode Q,DataType *d)
{
if(Q->front==NULL)
{
printf("队列已空无元素可取\n");
return 0;
}
else
{
*d=Q->front->data;
return 1;
}
}

//撤消动态申请链表空间
void Destroy(LQNode Q)
{
LQNode *p,*p1;
p=Q.front;
while(p!=NULL)
{
p1=p;
p=p->next;
free(p1);
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
说课包括哪些方面 说课内容包括()。 如何在手机百度上删除对话记录? 结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 数据结构中的链表是不是可以存放不同类型的数据 int型char型之类的 还是只能存放同一种类型的元素? 顺序链表到底是什么,在哪里讲的? 二叉树,如何将二叉树的游标表示法转为左右链表示。 谁告诉我c++里的链表是什么东西啊? c语言,链表头插法,结构体中的char数组如何赋值 请问C++里怎么把两个char型链接起来组成字符串?不要告诉我把单字符存 宫颈癌早期能治愈吗?早期需要如何预防? 早期宫颈癌最好的治愈方法 宫颈癌的早期治疗方法有哪些? 早期宫颈癌可治愈吗? 宫颈癌早期该如何治疗? 新车怎么磨合最好,我是新手,才买的新车,不知道怎么磨合对车子最有利.车子是B50 宫颈癌怎么治疗? 新车怎么磨合最好 宫颈癌如何治比较好? 新车磨合期该怎么开才会对车子好? 宫颈癌的治疗方法? 刚刚检查出早期宫颈癌,请问有什么治疗方法 新手司机做好这几件事才算是真正把新车提到手 新车怎样磨合最好? 宫颈癌早期如何治疗 怎么将string类型也像char一样存储在链表中?求源代码! 以二叉链为存储结构,写一算法求二叉树的叶子结点个数 为什么C语言链表中定义的结构体中要是有2个char,最后printf运行时出错str 我在C++编单链表链表的数据域是char型的,想以3空格作为输入结束 的标志 现实中,如果得了癌症,承担不起医药费,为了不拖累别人,你们会选择安乐死吗? 人得了大病,不想连累家人应怎么办 父亲为了不拖累在外打工的儿子隐瞒病情,儿子知道时晚了,你怎么看? 安徽男子因病不想拖累家人,选择跳河自尽,成年人的压力到底有多大? 身染重病不想拖累家人怎么办 农行开户行行号查询山东省渮泽市郓城县黄安镇 “很多老人生了一场大病才发现:对儿女太好是最错误的事”怎么看? 女人得了重病为了不拖累丈夫写下离婚协议书让他签字,为什么丈夫撕了离婚协议书还要找她啊 人得了大病,不想连累家人应怎么办? #男生会因为自己得了重病,不想连累女生而和她分手吗? 如果你生重病了,会因为不想拖累男朋友而提出分手么 男友生大病了说不想拖累我提出分手,我该如何应对? 有没有剧情是男主得了重病,不想拖累女主而瞒着女主不告诉她,但女主后来自己发现了*的小说或者是电视 山东农业银行济南市济阳支行联行号多少 美的热水器的标准使用方法步骤是什么? 女孩生了重病为了不连累丈夫选择离开他,悄悄的离开他了,女孩离开他后为什么还那么伤心欲绝啊