当前位置:首页 » 编程语言 » c语言链表与顺序表的差别
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言链表与顺序表的差别

发布时间: 2022-05-08 14:36:16

1. c语言中链表与队列有什么区别

C语言的链表与队列是两种不同的概念:

链表是一种数据的存储方式,其保存的数据在内存中是不连续的,采用指针对数据进行访问
队列是一种数据结构,其特点是先进先出,后进后出;

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

SQQUEUE的第一个元素elemtype
*elem;其实是指向了一个数组,该数组中存储着类型为elemtype的元素,然后front和rear就标识了队首和队尾元素对应的数组下标。

typedef
struct _Point{
int x,y;
}Point;
#defineelemtype
Point//这个elemtype可以是任意你自己定义的结构,可以是结构体,也可以是简单数据类型
elemtype
array[10]={0};//这个是队列的数据结构,在这里是一个Point数组
SQQUEUE
queue={0};
queue.elem=array;//这样array中的元素就是queue中的元素了。
queue.front=queue.rear=queue.size=0;


2. C语言数据结构线性表和链表的区别

线性表一般以数组形式实现,在内存中连续存放。
链表以链表的形式实现,在内存中可以不连续存放。

3. 数据结构中,顺序表和C语言数组的区别是什么

他们答得我个人觉得是不正确的,因为刚好在学,顺序表是指在计算机内存中连续的线性表,既有逻辑结构,也有存储结构;而数组属于有序表,单指逻辑结构。也就是说数组的实现最终是顺序表。

4. C语言 线性表和链表有什么区别

线性表有两种方式:
1.顺序线性表
(也就是用数组实现的,在内存中有顺序排列,通过改变数组大小实现)
2.链表
(不是用顺序实现的,用指针实现,在内存中不连续)
代码不全也不知道上面是做什么的,给你点提示吧
elem是线性表的基地址
length是线性表的长度
线性表的包含:
基地址
当前长度
总长度
每个表都有初始长度,如果超过了这个长度,可以用函数将这个长度加长

5. C语言中,双链表、单链表、顺序表有什么区别分别有什么用途简单来说,就是这三个表分别适用于什么情

链表是通过指针连接的表吧 就是在内存中不是连续的 单链表每一个节点包含一个数据和一个指向下一个节点的指针 双链表比单链表多一个指向上一个节点的指针 就是说单链表只能沿着一个方向走 双链表可以沿任意方向走 顺序表应该是在内存中顺序存储的表吧

6. C语言关于链表与顺序表的结构问题,静态顺序表与静态链表的区别是什么

静态链表是用数组实现的,是顺序的存储结构,在物理地址上是连续的,而且需要预先分配大小。动态链表是用申请内存函数(C是malloc,C++是new)动态申请内存的,所以在链表的长度上没有限制。动态链表因为是动态申请内存的,所以每个节点的物理地址不连续,要通过指针来顺序访问。静态链表在插入、删除时也是通过修改指针域来实现的,与动态链表没有什么分别(动态链表还需要删除内存)。。不知道我的回答是不是解决了你的问题,希望可以帮到你。 (其实用链表一般都是动态链表或者结构数组)

7. 在C语言中数组和链表有什么区别

要说这个区别,你要先知道数据结构。要说清楚数据结构要一本书的内容,所以我只能抽个直接相关的东东来说一下:线性表。
线性表:
逻辑上 是一张二维表,里面有元素和相应元素的位置。
物理上 线性表以两种形式在内存中存放:顺序表和链式表。
这顺序表要求:在内存中连续的内存地址存放。(可看成数组)
而链式表不要求以连续的内存块平存放,它有一个指针域来索引到下一个节点。(链表)

性能上分析:
顺序表(数组)可直接索引到某个元素,而链表只能从链表头(如果为单链表)开始一个一个去找,所以比顺序表要低效。
另外一方面,如果顺序表要删除或插入元素就要移动多个后面的元素,而链表则不用移动元素,只要修改指针域就行了,所以在有删除或修改动作时,链表比较高效。

当然我说的还很不全面,你可以参考一下数据结构这本书的线性表这章。

8. 请问顺序链表和数组有什么区别另外求一个c语言动态数组的例程,最好是有注释的,谢谢

这里的Define是让你学会创建顺序表的方法。你学会创建用define定义的长度的顺序表之后,对于动态数组就可以实现了。 这个是可以改变的。用下面的程序给你实现下。 讲的是,你要输入多少个数字。 如果用单纯的数据。你最开始的时候定义了数字长度为100,那么你在运行程序的时候,输入的数据最多就100个,再多就不行了。会越界。然而你用动态数组就可以,你要输入多少,数组的长度就多少了。 这就是动态数据了。 /*wintc编译器 若用c++ 去掉 getch()*/ #include <stdio.h> #include<stdlib.h> #include<alloc.h> int main() { int *arr=NULL; int i,n,t; scanf("%d",&n);/*你要输入多少个数据 */ arr=(int*)malloc(sizeof(int)*n); if(!arr)exit(0); for(i=0;i<n;i++) { scanf("%d",&arr[i]); } for(i=0;i<n;i++) { printf("%d ",arr[i]); } printf("current the array length is %d\n",n); free(arr); getch(); return 0; }