线性表的顺序存储结构(C语⾔讲解)⽬录
1.顺序存储结构定义
**
线性表的顺序存储结构,指的是⽤⼀段地址连续的存储单元以此存储线性表的数据元素
这⾥的元素可能包括多组数据
**
线性表顺序储存的结构代码
#define max 10//数组长度
typedef int Elemtype;//Elemtype根据实际情况⽽定,这⾥为int
typedef struct list //创建顺序存储结构
{
Elemtype date[max];
int len;//线性表当前长度
};
数组长度与线性表的长度的区别
线性表的长度是线性表中数据元素的个数,
数组的长度是存放线性表的存储空间的⼤⼩
**注:**只有当数组长度>线性表的长度时才可以向线性表中插⼊元素
所以在任意时刻数组长度应⼤于线性表的长度
2.顺序存储结构获得元素操作
int getElem(list L,int i,Elemtype x)//获得元素操作,L为线性表,i为线性表第i个元素,将值传给x
{
if(L.len==0||i<1||i>L.len)
return0;
else
{
x=L.date[i-1];
return x;//x即为需要获取的元素
}
}
3.顺序存储结构插⼊操作
int listinsert(list*L,int i,Elemtype e)//在线性表L中第i个位置之前插⼊新的数据元素e,L++
{
int t;
if(L->len==max||i<1||i>L->len)
return0;
if(i<=L->len)
{
for(t=L->len-1;t>=i-1;t--)
{
L->date[t+1]=L->date[t];//将插⼊元素位置后的元素向后移⼀位
}
L->date[i-1]=e;
L->len++;//线性表长度+1
}
}
4.顺序存储结构删除操作
int listdelete(list*L,int i,int*x)
{
int t;
if(L->len==0||i<1||i>L->len)
return0;
*x=L->date[i-1];
if(i<L->len)
{
for(t=i;t<L->len;t++)
{
L->date[t-1]=L->date[t];
}
L->len--;
}
return1;
}
5.完整代码举例
#include<stdio.h>
#include<typeinfo>
#define max 10//数组长度
typedef int Elemtype;//Elemtype根据实际情况⽽定,这⾥为int
typedef struct list //创建顺序存储结构
{
Elemtype date[max];
int len;//线性表当前元素
};
int getElem(list L,int i,Elemtype x)//获得元素操作,L为线性表,i为线性表第i个元素,将值传给x
{
if(L.len==0||i<1||i>L.len)
return0;
else
{
x=L.date[i-1];
return x;
}
}
int listinsert(list*L,int i,Elemtype e)//在线性表L中第i个位置之前插⼊新的数据元素e,L++
int listinsert(list*L,int i,Elemtype e)//在线性表L中第i个位置之前插⼊新的数据元素e,L++ {
int t;
if(L->len==max||i<1||i>L->len)
return0;
if(i<=L->len)
{
for(t=L->len-1;t>=i-1;t--)
{
L->date[t+1]=L->date[t];
}
L->date[i-1]=e;
L->len++;
}
}c语言listinsert函数
int listdelete(list*L,int i,int*x)
{
int t;
if(L->len==0||i<1||i>L->len)
return0;
*x=L->date[i-1];
if(i<L->len)
{
for(t=i;t<L->len;t++)
{
L->date[t-1]=L->date[t];
}
L->len--;
}
return1;
}
int main()
{
list L;
L.date[2]=3;//定义数组的第三个元素
L.len=3;//此时的线性表长度
int x;
printf("%d\n",getElem(L,3,x));// 获得线性表第三个数据
listinsert(&L,3,9);
printf("%d\n",getElem(L,3,x));// 获得插⼊后线性表第三个数据
listdelete(&L,3,&x);
printf("%d\n",getElem(L,3,x));//获得删除后线性表的第三个数据
}
以下为运⾏结果
**

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。