C语言线性表顺序存储结构实例详解
C语言线性表顺序存储结构实例详解
1、什么是顺序存储结构?
用一段地址连续的存储单元依次存储线性表的数据元素。
2、线性表的顺序存储结构
#include#include #defineMax80//存储空间初始分配量 #defineIncrement10//存储空间分配增量 typedefstruct { int*elem;//存储空间基地址,此处为int型,视情况而定 intlength;//元素表当前长度 intsize;//当亲分配的存储容量 }SqList;
3、顺序表的初始化操作是为顺序表分配一个预定大小的数组空间,并将顺序表的长度设为0。
<一>intInitList(SqList&L)
{
L.elem=(int*)malloc(Max*sizeof(int));
if(!L.elem)
return;//exit(0);//存储分配失败
L.length=0;//空表长度为0
L.size=Max;//初始存储容量
returnOk;
}
<二>intCreatList(SqList&L)
{
L.elem=(int*)malloc(Max*sizeof(int));
if(!L.emle)
return;//exit(0);
L.length=0;
L.size=Max;
printf("请输入表的长度:");
scanf("%d",&L.length);
printf("请输入%d个数:",L.length);
for(i=0;i
4.获取元素操作:将线性表中的第i个位置元素值位置返回
intGetElem(SqList&L,inti,inte)
{
//1<=i<=L.length
if(i<1||i>L.length)
returnERROR;
*e=L.elem[i-1];
returnOk;
}
5线性表的插入操作
“
intInsert(SqList&L)
{
int*_new;
inti;
inte;
printf(“输入要插入的位置及其元素:”);
scanf(“%d%d”,&i,&e);
if(i<1||i>L.length)
{
printf(“插入的位置不合法!”);
returnERROR;
}
if(L.length>=L.size)//当前空间已满,增加分配
{
_new=(int)malloc(L.elem,(L.length+Increment)*sizeof(int));
if(!_new)//存储分配失败
return;//exit(0);
L.elem=_new;//新基址
L.size=L.size+Increment;//增加存储容量
}
q=&(L.elem[i-1]);//q为插入的位置
for(p=&(L.elem(L.length-1));p>=q;–p)//插入后元素右移
*q=e;//插入e
++L.length;//长度加一
returnOK;
}
6、删除元素```
intListDelete(SqList&L,inti,int*e)
{
intk;
if(L.length==0)//线性表为空
returnERROR;
if(i<1||i>L.length)//插入不正确
returnERROR;
*e=L.elem[i-1];
if(i
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!