数据结构之线性表的基本操作
初始化,插入,获取
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define OK 1
#define OVERFLOW -1
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef int ElemType;
typedef struct{
ElemType *elem;
int length;
int listsize;
}SqList;
int main(){
int InitList(SqList &L);
int input(SqList &L);
int ListLength(SqList L);
int ListInsert(SqList &l,int i,ElemType e);
int GetElem(SqList L,int i,ElemType &e);
SqList L;
int i=0;
ElemType e;
printf("输出结果为1则构造成功:%d\n",InitList(L));
input(L);
printf("在线性表中输入元素后,线性表为:\n");
for(int j=0;j<ListLength(L);j++){
printf("%d ",L.elem[j]);
}
printf("\n想要得到第几个位置的元素:");
scanf("%d",&i);
GetElem(L,i,e);
printf("该元素为:%d",e);
printf("\n请输入在第几个位置前插入元素:");
scanf("%d%d",&i,&e);
ListInsert(L,i,e);
printf("插入新元素后,线性表为:\n");
for(int k=0;k<ListLength(L);k++){
printf("%d ",L.elem[k]);
}
}
int InitList(SqList &L){
L.elem=(ElemType*)malloc(sizeof(ElemType)*LIST_INIT_SIZE);
if(!L.elem){
exit(OVERFLOW);
}
L.length=0;//线性表中元素个数为零
L.listsize=LIST_INIT_SIZE;
return OK;
}
int input(SqList &L){
printf("请输入线性表中元素的个数:");
scanf("%d",&L.length);
printf("线性表中的元素为:\n");
for(int i=0;i<L.length;i++){
scanf("%d",&L.elem[i]);
}
return OK;
}
int ListLength(SqList L){
return L.length;
}
int ListInsert(SqList &L,int i,ElemType e){
if(!L.elem){
exit(OVERFLOW);
}
ElemType *p,*q;
p=&(L.elem[i-1]);
for(q=&(L.elem[ListLength(L)-1]);q>=p;q--){
*(q+1)=*q;
}
L.elem[i-1]=e;
L.length++;
return OK;
}
int GetElem(SqList L,int i,ElemType &e){
e=L.elem[i-1];
return OK;
}