1.顺序表的定义
2.顺序表的初始化
3.顺序表元素增删改查
#include<stdio.h>
#define MAXSIZE 20
typedef int ElemType;
typedef struct
{
ElemType data[MAXSIZE];
int length;
}SeqList;
SeqList init_list(){//初始化
SeqList L;
L.length =0;
return L;
}
int list_length(SeqList *L){//获取长度
return L->length;
}
int get_element(SeqList L,int i){//根据序号查找元素
if(i<1 || i>L.length){
printf("序号超出范围");
return -1;
}
return L.data[i-1];
}
int list_locate(SeqList L,ElemType x){//根据元素查找位置
int i;
for(i=0; i<L.length;i++)
if(L.data[i]==x)
return (i+1);
return -1;//未找到
}
void list_insert(SeqList *L, ElemType x,int i){ //插入元素
int j;
if (L->length == MAXSIZE) printf("溢出,不能插入 \n");
else if(i<1 || i > L->length+1) printf("插入范围出错 \n");
else { for(j=L->length-1; j>=i-1; j--)
L->data[j+1] =L->data[j];
L->data[i-1] =x;
L->length++;
}
}
void list_delete(SeqList *L,int i){//删除元素
int j;
if(L->length<=0) printf("空表,无法删除元素");
if(i>L->length || i<=0) printf("删除位置出错");
else {
for(j=i;j<=L->length-1;j++)
L->data[j-1] =L->data[j];
L->length--;
}
}
SeqList list_scanf(SeqList L){ //创建链表
int x;
int i;
printf("请输入顺序表的元素(-1结束)");
for(i=0;;i++){
scanf("%d",&x);
if(x==-1){
break;
}
L.data[L.length] = x;
L.length++;
}
return L;
}
void list_print(SeqList L){//打印链表
int k;
printf("顺序表的元素有:");
for(k = 0; k<L.length;k++){
printf("%3d ",L.data[k]);
}
printf("\n");
}
int main(){
int pos;
int key;
SeqList L = init_list();
L = list_scanf(L);
list_insert(&L, 3, 2);
// list_delete(&L,1);
//pos= list_locate(L,2);
// printf("查找到该元素位于:%d \n",pos);
//key = get_element(L,3);
//printf("该元素为:%d \n",key);
list_print(L);
printf("length:%d \n",list_length(&L));
return 0;
}