一:线性顺序存储结构和链式存储结构有什么区别
定义
顺序存储结构就是用一组地址连续的存储单元依次存储该线性表中的各个元素。由于表中各个元素具有相同的属性,所以占用的存储空间相同。
线性表按链式存储时,每个数据元素 (结点)的存储包括数据区和指针区两个部分。数据区存放结点本身的数据,指针区存放其后继元素的地址只要知道该线性表的起始地址表中的各个元素就可通过其间的链接关系逐步找到
优缺点
顺序存储需要开辟一个定长的空间,读写速度快,缺点不可扩充容量(如果要扩充需要开辟一个新的足够大的空间把原来的数据重写进去)
链式存储无需担心容量问题,读写速度相对慢些,由于要存储下一个数据的地址所以需要的存储空间比顺序存储大。
二:如何建立一个顺序存储的线性表,实现线性表的插入、删除操作?
顺序存储结构线性表基本操作 C语言实现
#include
三:线性表的顺序存储结构是一种怎样的结构
线性表可以采用顺序存储结构和链式存储结构。
前者叫顺序表,后者叫链表。
四:线性表的顺序存储结构是通过何种方式表示元素之间的关系
顺序存储结构是顺序通过表示元素之间的关系的,链式存储结构是通过链表示元素之间的关系的
五:线性表的顺序存储结构和线性表的链式存储结构分别是
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");
}