顺序表和静态链表的区别?
高手解答:顺序表和静态链表的区别!我怎么觉得顺序表和静态链表是一样的啊,都是用数组实现的!望大神能释放我内心的疑惑……感激不尽……...
高手解答:顺序表和静态链表的区别!我怎么觉得顺序表和静态链表是一样的啊,都是用数组实现的!望大神能释放我内心的疑惑……感激不尽……
展开
1个回答
展开全部
顺序表和静态链表的物理结构(即存储结构)是相同的,在计算机内存中以数组的形式保存的线性表,是用一组地址连续的存储单元依次存储数据元素的线性结构,但两者的数据结构(逻辑结构)是不同的:
顺序表:着眼于整个数组,采用动态分配的一维数组,仍然借助了指针进行数据操作,具体描述如下:
typedef struct
{
ElemType *elem;
int length;
int listsize;
}Sqlist;
在线性表的插入和删除操作时,需要借助指针来移动元素。
静态表:不设指针而使用链表结构,数组元素的一个分量用于存放数据,另一个用来作为“游标”指示下一结点在数组中的相对位置,数据的存储尽管是采用一维数组的形式存储在计算机中,但仍然是继承了链表指向不一定总是指向紧挨着其的结点,描述如下:
typedef struct
{
Elemtype data;
int cur;
}component,SLinkList[MAXSIZE];
这种存储结构,仍需要预先分配一个较大的空间,但在作为线性表的插入和删除操作时不需移动元素,仅需修改指针(游标),故仍具有链式存储结构的主要优点。
鉴于两者的数据结构不同,对用的数据操作也就不同。
顺序表:着眼于整个数组,采用动态分配的一维数组,仍然借助了指针进行数据操作,具体描述如下:
typedef struct
{
ElemType *elem;
int length;
int listsize;
}Sqlist;
在线性表的插入和删除操作时,需要借助指针来移动元素。
静态表:不设指针而使用链表结构,数组元素的一个分量用于存放数据,另一个用来作为“游标”指示下一结点在数组中的相对位置,数据的存储尽管是采用一维数组的形式存储在计算机中,但仍然是继承了链表指向不一定总是指向紧挨着其的结点,描述如下:
typedef struct
{
Elemtype data;
int cur;
}component,SLinkList[MAXSIZE];
这种存储结构,仍需要预先分配一个较大的空间,但在作为线性表的插入和删除操作时不需移动元素,仅需修改指针(游标),故仍具有链式存储结构的主要优点。
鉴于两者的数据结构不同,对用的数据操作也就不同。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询