1.顺序存储结构定义
**
线性表的顺序存储结构,指的是用一段地址连续的存储单元以此存储线性表的数据元素 这里的元素可能包括多组数据 **
线性表顺序储存的结构代码
#define max 10
typedef int Elemtype;
typedef struct list
{
Elemtype date[max];
int len;
};
数组长度与线性表的长度的区别
线性表的长度是线性表中数据元素的个数, 数组的长度是存放线性表的存储空间的大小 **注:**只有当数组长度>线性表的长度时才可以向线性表中插入元素 所以在任意时刻数组长度应大于线性表的长度
2.顺序存储结构获得元素操作
int getElem(list L,int i,Elemtype x)
{
if(L.len==0||i<1||i>L.len)
return 0;
else
{
x=L.date[i-1];
return x;
}
}
3.顺序存储结构插入操作
int listinsert(list*L,int i,Elemtype e)
{
int t;
if(L->len==max||i<1||i>L->len)
return 0;
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++;
}
}
4.顺序存储结构删除操作
int listdelete(list*L,int i,int*x)
{
int t;
if(L->len==0||i<1||i>L->len)
return 0;
*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--;
}
return 1;
}
5.完整代码举例
#include<stdio.h>
#include <typeinfo>
#define max 10
typedef int Elemtype;
typedef struct list
{
Elemtype date[max];
int len;
};
int getElem(list L,int i,Elemtype x)
{
if(L.len==0||i<1||i>L.len)
return 0;
else
{
x=L.date[i-1];
return x;
}
}
int listinsert(list*L,int i,Elemtype e)
{
int t;
if(L->len==max||i<1||i>L->len)
return 0;
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++;
}
}
int listdelete(list*L,int i,int*x)
{
int t;
if(L->len==0||i<1||i>L->len)
return 0;
*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--;
}
return 1;
}
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) );
}
以下为运行结果 **
|