计算机内部存储一张线性表,最为方便的就是一组连续的内存单元来存储整张线性表。这种顺序存储结构下的线性表就叫顺序表
线性表的数据对象集合为{a1,a2,....an},每个元素的类型都一样。其中除第一个元素a1外,每一个元素有且只有一个直接前驱元素,除了最后一个元素an外,每个元素有且只有一个直接后继元素。数据元素之间的关系是一对一的关系。
<li>有一个唯一的表名来标识该顺序表
<li>内存单元连续存储,也就是说,一张顺序表要占据一块连续的内存空间。
<li>数据顺序存放,元素之间有先后关系
向顺序表中插入元素。
在长度为n的顺序表中的第i个位置插入新的元素,是指在顺序表第i-1和第i个数据之间插入一个新元素item
A(a1,a2,...,ai-1,ai,...an) -----A(a1,a2,...,ai-1,item,ai,...an)
删除一个元素
A(a1,a2,...,ai-1,ai,ai+1,...an) -----A(a1,a2,...,ai-1,ai+1,...an)
<pre>
#include<stdio.h>
#define MaxSize 10
//插入顺序表
void insertElem(int Sqlist[],int len,int i,int x)
{
int t;
if(len==MaxSize || i<1 || i>len+1){
printf("This insert is illegal\n");
return;
}
for(t=len-1;t>=i-1;t--){
// printf("%d-->%d\n",t,Sqlist[t]);
Sqlist[t+1] = Sqlist[t];
}
Sqlist[i-1] = x;
*len = len+1;
}
//删除
void DeElem(int Sqlist[],int len,int i){
int j;
if(i<1 || i>len+1){
printf("This Delete is illegal ");
return;
}
for(j=i;j<len;j++){
printf("de-->%d---->%d\n",j,Sqlist[j]);
Sqlist[j-1] = Sqlist[j];
}
*len = *len-1;
}</pre>
<pre>
int main(void) {
int Sqlist[MaxSize],int len, int i;
for(i=0;i<6;i++){scanf("%d ",&Sqlist[i]);}
len = 6;
for(i=0;i<len;i++){printf("%d ",Sqlist[i]); }
printf("shengyu length is %d\n",MaxSize-len);
insertElem(Sqlist,&len,3,0);
for(i=0;i<len;i++){
printf("%d ",Sqlist[i]);
}
printf("shengyu length is %d\n",MaxSize-len);
DeElem(Sqlist,&len,5);
for(i=0;i<len;i++){
printf("%d ",Sqlist[i]);
}
printf("shengyu length is %d\n",MaxSize-len);
return 0;
}
网友评论