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

C语言链表与队列的问题

发布网友 发布时间:2022-04-25 17:10

我来回答

3个回答

热心网友 时间:2023-10-22 00:52

首先:链表与队列都是数据结构的一种

一. 链表

 1.定义 

        链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在由一个个节点组成,每个节点(node)中储存着数据变量(data)和指针变量(node next),又有一个头节点(head)连接下面的节点,而最后一个节点指向空(null)。可以在链表类中定义增加,删除,插入,遍历,修改等方法,故常用来储存数据。   

2. 优点 

      (1).使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。       (2).数据的存取往往要在不同的排列顺序中转换,而链表是一种自我指示数据类型,因为它包含指向另一个相同类型的数据的指针(链接)。链表允许插入和移除表上任意位置上的节点,但是不允许随机存取。   

3. 缺点 

        链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。   

4. 类型 

        主要有单向链表,双向链表以及循环链表。   

5. 实例 

    

6. 与数组(Array)的对比 

        链表的使用不需要知道数据的大小,而数组在创建时必须指明数组的大小。         链表没有对应的下标,只有指向下一个数据的指针,而数组中每一个都有一个相对应的下标。 

        链表在内存中储存的数据可以是不连续的,而数组储存的数据占内存中连续的一段,用标识符标识。

二. 队列 1. 定义 

        队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。         在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。

热心网友 时间:2023-10-22 00:53

你的程序是建了五个结点,因为每次for中进去都是新建的“p”,而且这几个结点还连上了,但是没有头结点!!
你写了个程序应该考虑怎么检验,你的链表连个表头都没有,怎么检验,你的程序是把一些结点连起来了,但是没有表头找不到,我帮你加了个头结点Q(全局变量)在insertQL函数中if中把头给传出来,加了个测试用的while,我用/////////把我加的东西隔出来了,你自己看看,刚开始的话还是参照课本上的链表程序,那都是经典!多体会!
就链表而言你的QList这个结构体类型中就是两个指针,封装成个结构体没有必要,鸡肋了。

#include <stdio.h>
#include <stdlib.h>
typedef struct QNode
{ int data;

struct QNode* next; }QNode;
typedef struct QList
{

struct QNode* front;

struct QNode* end;
}QList;
////////////////////
QNode *Q;
/////////////////////////////////
void InsertQL(QList* QL,int value)
{

QNode *p;

p=(QNode*)malloc(sizeof(QNode));

p->data=value;

if(QL->front==NULL)
{

QL->front=p;
QL->end=p;
p->next=NULL;
///////////////////
Q=p;
/////////////////////////////
}

else
{
p->next=NULL;
QL->end->next=p;
QL->end=p;
}
}

int main()
{
QList *ML;

int i;
ML=(QList*)malloc(sizeof(QList));

ML->front=NULL;
ML->end=NULL;

for(i=0;i<5;i++)

{ InsertQL(ML,i*8+3);
}
////////////////////////////////////////////////////
while(1)
{
printf("!!!%d \n",Q->data);
if(Q->next!=NULL)
Q=Q->next;
else
break;
}
//////////////////////////////////////////////////
return 0;
}追问谢了,但我最不明白的还是怎么连上的,我觉得的第一次创建的P赋给了ML的front和end,第二次创建的P连在了第一次创建P的后面,这都没问题,但第三次创建的P一直按这句QL->end->next=p;运行,我觉得应该是把第二次的P覆盖掉的,后面再创建也应该都是覆盖前面的?

追答else中
p->next=NULL; (1 )
QL->end->next=p; ( 2 )
QL->end=p; (3)
第一句每次都把尾结点的next为NULL,第二句,在前一个(p前)的后面连上(p这),第三句
把(p这)赋给(p前),这就意味着下一次调用,也就是第三次调用QL->end->next指的是(p这)后面的结点,后又把第三次产生的p作为QL->end,第四次调用QL->end->next指的就是第三次产生后面的结点了,后又把第四次产生的p作为QL->end,如此循环。
也就是说QL->end充当了一个桥,它负责存放新节点,供下次的QL->end->next来使用,从而连接起来,不知道我说清楚了没,你看是不?多看几步细细看!

热心网友 时间:2023-10-22 00:53

链表是一种数据的存储方式,其保存的数据在内存中是不连续的,采用指针对数据进行访问;

队列是一种数据结构,其特点是先进先出,后进后出;

存储方式:队列的可以使用线性表进行存储,也可以使用链表进行存储。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
弱弱的问一句R9 270X显卡怎么样~ 能带得起我的AMD 240CPU么?_百度知 ... i54570cpu华硕z87a主板要配多少的内存条和显卡 i5 3570k配R9 270X显卡,用什么主板和电源? 很容易上火是什么原因 口干舌燥五心烦热失眠多梦夜不能寐请问是什么原因,吃什么能有效... 想问看大家对老妻少夫的问题有何看法? ...战记第十三章第6关打法 山海战记13-6攻略-手游攻略-游戏鸟手游网 ...战记第十七章第1关打法 山海战记17-1攻略-手游攻略-游戏鸟手游网 ...山海战记9-6图文攻略-手游攻略-游戏鸟手游网 ...战记第十二章第2关打法 山海战记12-2攻略-手游攻略-游戏鸟手游网 设顺序表L是一个递增有序表。编写算法,要求利用二分查找法确定插入位置,将元素x插入到L中,使L保持有 14. 定义一个QList &lt;int&gt; list 变量, 将整数5放在这个链表的最后,应用一下哪条 C++ Qt| 在QListWidget请问怎么添加把item到最前面? 微信表情女人发一个辣椒什么意思? 女人发微信给男人用呲牙表情是什么意思? 女人发微信呲牙啥意思? 女生在微信上唉的表情的表示是什么意思? 微信表情里的喊yes的美女是谁 这是微信表情,求这个女的作品 公安局能查多长时间的开的房记录 10年前开的房记录能查到吗 律师您好,派出所已立案我曾有和别人开过的房入住记录能不能被查到? 腌制的鸡肉怎么做好吃? 鸡肉怎腌制 照片中出现白点是怎么回事? 为什么金鱼身上长白点后,没过多久金鱼就死了? 我家金鱼怎么全身长着一层小白点啊..有图..求助 我家的红鹦鹉鱼身上起白点,是什么病啊?就是这图片上的小白点,现在已经死了一条了 医生,我的小腿上长白点,不痛不痒的,是怎么回事 诡异!!图片中有几个白点? 怎么在QListWidgetItem中添加按钮 在QT中怎么使当鼠标滑到第一个QListWidget的Item时响应第二个QListWigdet增加新的Item 在LINUX下,用QT实现生产者与消费者关系的实例 如何在qlistwidget里添加表格 js脚本问题 如果把一个人蹭热点拉入黑名单了怎么才能弄出来? QList 的clear 是完全释放内存吗 QT开发 QListWidget点击返回行号的问题 C#将数组放入队列,再修改数组值,队列里面的值也跟着修改了,怎么解决?? http://www.1188.com/?pp怎么删除 http://www.1188.com photoshop cs9.0版 下载地址 要注册版和激活码的哦 电场力和库仑力的区别 请问库仑力与电场力有什么区别,谢谢 电场力 库仑力 静电力的区别、方向 高中物理电学电场力与库仑力方向的判断 库仑力和电场力到底是不是同样的力?它们有什么关系和区别? 库仑力、电场力、和电场强度的关系 库仑力和电场力有什么区别? 是不是同一种力的不同叫法? 关于电场力和库仑力