在C语言中数组和链表有什么区别?
发布网友
发布时间:2022-03-23 22:29
我来回答
共3个回答
热心网友
时间:2022-03-23 23:59
要说这个区别,你要先知道数据结构。要说清楚数据结构要一本书的内容,所以我只能抽个直接相关的东东来说一下:线性表。
线性表:
逻辑上 是一张二维表,里面有元素和相应元素的位置。
物理上 线性表以两种形式在内存中存放:顺序表和链式表。
这顺序表要求:在内存中连续的内存地址存放。(可看成数组)
而链式表不要求以连续的内存块平存放,它有一个指针域来索引到下一个节点。(链表)
性能上分析:
顺序表(数组)可直接索引到某个元素,而链表只能从链表头(如果为单链表)开始一个一个去找,所以比顺序表要低效。
另外一方面,如果顺序表要删除或插入元素就要移动多个后面的元素,而链表则不用移动元素,只要修改指针域就行了,所以在有删除或修改动作时,链表比较高效。
当然我说的还很不全面,你可以参考一下数据结构这本书的线性表这章。
热心网友
时间:2022-03-24 01:17
数组和连表最大的区别是:数组需要定义长度,连表不需要。
热心网友
时间:2022-03-24 02:51
二者都属于一种数据结构
从逻辑结构来看
1. 数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费;数组可以根据下标直接存取。
2. 链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项,非常繁琐)链表必须根据next指针找到下一个元素
从内存存储来看
1. (静态)数组从栈中分配空间, 对于程序员方便快速,但是自由度小
2. 链表从堆中分配空间, 自由度大但是申请管理比较麻烦
从上面的比较可以看出,如果需要快速访问数据,很少或不插入和删除元素,就应该用数组;相反, 如果需要经常插入和删除元素就需要用链表数据结构了。
参考资料:http://backbird0326.spaces.live.com/blog/cns!C3BD9BDDBBD19072!198.entry