线性表顺序存储结构

一:线性顺序存储结构和链式存储结构有什么区别

定义

顺序存储结构就是用一组地址连续的存储单元依次存储该线性表中的各个元素。由于表中各个元素具有相同的属性,所以占用的存储空间相同。

线性表按链式存储时,每个数据元素 (结点)的存储包括数据区和指针区两个部分。数据区存放结点本身的数据,指针区存放其后继元素的地址只要知道该线性表的起始地址表中的各个元素就可通过其间的链接关系逐步找到

优缺点

顺序存储需要开辟一个定长的空间,读写速度快,缺点不可扩充容量(如果要扩充需要开辟一个新的足够大的空间把原来的数据重写进去)

链式存储无需担心容量问题,读写速度相对慢些,由于要存储下一个数据的地址所以需要的存储空间比顺序存储大。

二:如何建立一个顺序存储的线性表,实现线性表的插入、删除操作?

顺序存储结构线性表基本操作 C语言实现

#include //以下为函数运行结果状态代码#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2#define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量#define LISTINCREMENT 10 //线性表存储空间分配增量typedef int Status; //函数类型,其值为为函数结果状态代码typedef int ElemType; //假设数据元素为整型typedef struct{ ElemType *elem; //存储空间基址 int length; //当前长度 int listsize; //当前分配的存储容量}SqList;//实现线性表的顺序存储结构的类型定义//函数声明开始Status InitList_Sq(SqList &L);void DestroyList_Sq(SqList &L);void ClearList_Sq(SqList &L);void ListEmpty_Sq(SqList L);Status GetElem_Sq(SqList L,i,&e);int LocateElem_Sq(SqList L,e,compare());Status PriorElem_Sq(SqList L,cur_e,&pre_e);Status NextElem_Sq(SqList L,cur_e,&next_e);Status ListInsert_Sq(SqList &L,i,e);Status ListDelete_Sq(SqList &L,i,&e);ListTravel_Sq(SqList L,visit());//函数声明结束int main(void){ return 0;}//函数定义开始/////////////////////////////////////////函数名:InitList_Sq()//参数:SqList *L//初始条件:无//功能:构造一个空线性表//返回值:存储分配失败:OVERFLOW// 存储分配成功:OK///////////////////////////////////////Status InitList_Sq(SqLis......余下全文>>

三:线性表的顺序存储结构是一种怎样的结构

线性表可以采用顺序存储结构和链式存储结构。

前者叫顺序表,后者叫链表。

四:线性表的顺序存储结构是通过何种方式表示元素之间的关系

顺序存储结构是顺序通过表示元素之间的关系的,链式存储结构是通过链表示元素之间的关系的

五:线性表的顺序存储结构和线性表的链式存储结构分别是

B,

顺序存储结构的地址在内存中是连续的所以可以通过计算地址实现随机存取,而链式存储结构的存储地址不一定连续,只能通过第个结点的指针顺序存取;

六:1、 建立线性表的(动态分配)顺序存储结构。

屁话!我倒知道你编译失败!你的主函数main呢???下面的是我写的。

#include

#include

#define OK 1

#define ERROR 0

#define TRUE 1

#define FALSE 0

#define OVERFLOW -2

#define LIST_INIT_SIZE 100

#define礌LISTINCREMENT 10

typedef int ElemType;

typedef int Status;

typedef struct{

ElemType *elem;

int length;

int listsize;

}Sqlist;

Status InitList_Sq(Sqlist *L) {//千万注意这里的参数是×L ,而不是&L,为什么?

L->elem = (ElemType *) malloc (LIST_INIT_SIZE * sizeof(ElemType) );//这里为什么是L->elem,而不是L.elem?

if(!L->elem) exit( OVERFLOW );

L->length=0;

L->listsize = LIST_INIT_SIZE;

return OK;//这句话纯属废话

}

int main(void) {

Sqlist A;

InitList_Sq(&A);

}//

七:线性表的顺序存储结构是随机存取的?

线性表的顺序存储结构可以通过线性表的首址加偏移的方法计算出礌第i个数据的位置a+i*sizeof(单个结构)而线性表的链式存储结构要访问第i个数据,就必须先访问前面的i-1个数据

八:c语言实现线性表的顺序存储结构

#include "stdio.h"

#include "stdlib.h"

int main()

{ int a[10],i,j,k,t,x;

for(i=0;i<9;i++)

a[i]=rand()%100; //给数组赋随机值范围0-100

for(i=0;i<8;i++) //数组从小到大排序

for(j=i+1;j<9;j++)

if(a[i]>a[j])

{ t=a[i];a[i]=a[j];a[j]=t;

}

//输出一维数组中的数

for(i=0;i<9;i++)

printf("%d ",a[i]);

printf("\n");

//向数组插入一个数x

scanf("%d",&x);

if(x>a[8]) a[9]=x;

else if(x

{

for(i=9;i>0;i--)

a[i]=a[i-1];

a[0]=x;

}

else

{for(i=0;i<8;i++)

if(x>a[i]&&x

for(j=9;j>k;j--)

a[j]=a[j-1];

a[k]=x;

}

//输出插入后的数组

for(i=0;i<10;i++)

printf("%d ",a[i]);

printf("\n");

//删除数组中的一个元素

//输入要删除的元素的下标

scanf("%d",&k);

for(i=k;i<10;i++)

a[i]=a[i+1];

//输出删除后的数组

for(i=0;i<9;i++)

printf("%d ",a[i]);

printf("\n");

}

扫一扫手机访问

发表评论