顺序表有什么用?与链表是什么关系?在讲数据结构的时候,老师一来就让我们摸不清头脑了。说得偷梁换柱的概念
顺序表有什么用?与链表是什么关系?
在讲数据结构的时候,老师一来就让我们摸不清头脑了。说得偷梁换柱的概念太多。
一来就说怎么创建一个顺序链表。今天上机实验课的时候,老师根本就不演示代码给我们看,因为她教C语言到现在都是在黑板上写代码,我想代码不是在黑板上或者纸上运行的吧?于是我怀疑老师写代码的能力,在有vc++6.0, vs2008的实验室,老师只会用tc2.0.但是奇怪的是,她写的代码居然不用修改就能通过。
于是我写了一个链表:
#include <stdio.h>
#include <malloc.h>
typedef struct {
int data[1024];
int len;} list;
//创建一个链表
void create (list *l, int len) {
for (int i = 0; i < len; i++)
scanf ("%d", &l->data[i]);
return;
}
//输出链表
void output_list (list * l, int len) {
for (int i = 0; i < len; i++)
printf ("%d\n", l->data[i]);
return;
}
int main (){
int len;
list *s;//s代表数组的首地址。len代表它的长度。
s = (list *)malloc (sizeof (s) );
printf ("请输入你所需要的链表的长度:\n");
scanf ("%d", &len);create (s, len);output_list (s, len);
return 0;
}
想来想去,这个链表与数组没有什么区别。浪费的内存又多。于是上贴吧提问,他们说这个不是链表。
本人想问的是:
1。这是一个顺序表么?
2。顺序表与链表是什么关系?
3.顺序表的结构体定义的成员浪费内存那么多,为什么不用数组就行啦?
4.顺序表有什么用?
[解决办法]顺序表就是数组
链表包含顺序表.顺序表就是链表的子集
[解决办法]顺序表因为表述、翻译和使用场合的不同,有两个不同的含义,一个是表示有序表,也就是维持其中的元素和元素之间相对关系的数据结构。
这么说来,顺序表包括了链表和线性存储的表(也就是数组)。
另一个表示线性存储的表,即数组,这样说来,线性表和链表是两个不同的东西。
我们采用后一种说法,那么连续存储和链表各有什么优缺点呢?
线性表的优点,连续存储,随机读取,寻址方便,实现简单,适合固定长度或者大概知道所需长度的情况。
链表的优点,容易在其中间插入、删除元素,节约存储空间,缺点是不易随机存储,实现比较复杂。
[解决办法]原来是吧里的“近视攻城狮”?你还是看下书上的链表例子吧
[解决办法]《数据结构》严蔚敏版只有伪代码是不错,但顺序表的概念总是有的吧,何况从 伪代码 到 代码 是一个很好的开发习惯
[解决办法]数据结构、算法本身就是一种思想,用伪代码没什么问题吧...用C只是一种比较好的实现而已...
还有,你举得例子好像不能算一个我们平常所说的链表...顺序表就是数组,他的存储空间是连续的..你可以打印出来看看。但我们一般所说的链表是由数据和指针两部分组成的,通过指针将不同位置的结构体连接在一起。
一般定义也不会像你这样定义,给你举个例子,比如一个顺序表是int a[10],那么对应的链表就是:
struct Node{
int i;
struct Node* next;
};
数据区是一个int、然后有一个指针。这样一个节点就对应了数组的一个存储位置,然后一串链表就相当于一个数组。
至于你说的什么用嘛,顺序表的特点是空间连续随机存储,所以使用比较方便,但缺点就是难以扩充。
链表嘛操作复杂了点,但可以比较容易的扩充,想插入几个节点就插入几个节点。而且也容易删除,不像顺序表无法删除中间的某一个节点数据(删除后要往前移,但链表只要改下指针指向就可以了)..总之各有各的优点。
[解决办法]一个数组都是顺序表啊
[解决办法]好的,我来各个击破
1.这不是链表,这是顺序表
原因:这是一块地址连续的内存空间。各元素之间的前后关系可以通过内存地址的大小关系体现,这是顺序表的特性。
2.顺序表和链表的关系,是线性表的两大类。是数据结构关系“一个范畴两个分类”——一个范畴:都是线性表。两个分类:各有自己的优点和缺憾!
3.浪费内存这个说法太绝对喽,要相对而言!它相对链表还是节省内存的。它依靠物理上连续来体现逻辑上的线性关系,而不用像链表那样,通过结构体附加指针,来表示逻辑关系,从而省去了表达逻辑关系的一些内存开销!
4.顺序表应用最典型的就是后面你要学到的:栈!顺序队列!排序!等等
说明一点:数据结构中“关系”很重要。整本数据结构书都是以此展开的。(我印象里好像四大类:集合,一对一线性关系——线性表,栈,队列,一对多——树,二叉树,多对多——图)估计开篇序论中已经谈及这些概念,lz理解有点欠缺,不过,会慢慢理解到位的!