发布网友 发布时间: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”,而且这几个结点还连上了,但是没有头结点!!追答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
链表是一种数据的存储方式,其保存的数据在内存中是不连续的,采用指针对数据进行访问;
队列是一种数据结构,其特点是先进先出,后进后出;
存储方式:队列的可以使用线性表进行存储,也可以使用链表进行存储。