//线性表顺序存储
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
#define ElemType int
//定义结构体
typedef struct LinearList{ElemType elem[MAXSIZE];int last;
}LinearList;
//初始化链表
void InitList(LinearList &L){L.last=-1;
};
//链表长度
int ListLength(LinearList &L){int length=L.last+1;return length;
}
//按位序查找
int GetData(LinearList &L,int i){int x;x=L.elem[i-1];return x;
}
//在指定位置插入元素
bool InsList(LinearList &L,int i,int e){int j;if(L.last+1==MAXSIZE||i-1>L.last+1||i<1){return false;}else {for( j=L.last+1;j>=i;j--){L.elem[j]=L.elem[j-1];}L.elem[i-1]=e;L.last++;return true;}
}
//删除指定位序元素
bool DeleList(LinearList &L,int i,int &e){int j;if(i-1>L.last||L.last<=-1||i-1<0){return false;}e=L.elem[i-1];for(j=i;j<=L.last+1;j++){L.elem[j-1]=L.elem[j];}L.last--;return true;
}
//按值查找,返回位序
int Locate(LinearList &L,int e){for(int j=0;j<=L.last;j++){if(L.elem[j]==e){return j+1;}else return -1;}
}
//打印线性表
void PLList(LinearList &L){printf("打印线性表:\n");for(int j=0;j<=L.last;j++){printf("%d ",L.elem[j]);}printf("\n");
}
int main(void){//声明链表LinearList L;//初始化InitList(L);//插入数据,直到换行 printf("请在指定位置插入值,换行表示结束:\n");int i;int e;scanf("%d %d",&i,&e);InsList(L,i,e);while(getchar()!='\n'){scanf("%d %d",&i,&e);InsList(L,i,e);} //打印线性表 PLList(L);//打印线性表长度 printf("线性表的长度为%d\n",ListLength(L));//按位序查找 printf("按位序查找,请输入你想查找的位序h:\n");int h;scanf("%d",&h);printf("第%d位的值为%d\n",h,GetData(L,h));///值查找,返回位序 printf("按值查找,请输入你想查找的值k:\n");int k;scanf("%d",&k); printf("您要查找的值%d在%d位序\n",k,Locate(L,k));// 删除指定位序,删除值存在cint a,c;printf("请输入删除的位序a:\n");scanf("%d",&a); printf("已删除位序a:%d处位置,删除值为c:%d\n",a,DeleList(L,a,c));//打印线性表 PLList(L);//打印线性表长度 printf("线性表的长度为%d\n",ListLength(L));//插入数据,直到换行 printf("请在指定位置插入值:\n");int b;int d;scanf("%d %d",&b,&d);InsList(L,b,d);//打印线性表 PLList(L);//打印线性表长度 printf("线性表的长度为%d\n",ListLength(L));return 0;
}
按值查找有点问题,只能返回最前的位序.