#include <iostream>
#include <stdio.h>
#include <stdlib.h>
// 顺序表
//动态顺序表的定义
#define InitSize 10
typedef int ElemType ;
typedef struct{
ElemType *data;
int MaxSize;
int length;
}SqList;
//初始化动态顺序表
void InitList(SqList &L){
L.data = (ElemType *)malloc(InitSize*sizeof(ElemType));
L.length = 0;
L.MaxSize = InitSize;
}
//动态增加顺序表的长度
void IncreaseSize(SqList &L,ElemType len){
ElemType *p=L.data;
L.data = (ElemType *)malloc(sizeof(ElemType)*len);
for(int i=0;i<L.length;i++){
L.data[i] = p[i];
}
L.MaxSize = L.MaxSize+len;
free(p);
}
//按指定位置插入顺序表
bool InsertList(SqList &L,int i,ElemType e){
if(i<1 || i>L.length+1){
printf("失败1\n");
return false;
}
if(L.length>=L.MaxSize){
printf("失败2\n");
return false;
}
for (int j=L.length;j>=i;j--)
L.data[j]=L.data[j-1];
L.data[i-1]=e;
L.length++;
return true;
}
//删除指定位置元素
bool ListDelete(SqList &L,int i ,ElemType &e){
if(i<1 || i>L.length)
return false;
e = L.data[i-1];
for (int j=i;j<=L.length;j++)
L.data[j-1] = L.data[j];
L.length--;
return true ;
}
//查找元素的位置
int LocateElem(SqList L,ElemType e){
if (L.length==0){
return 0;
}
for (int i=0;i<L.length;i++){
if (L.data[i]==e) {
return i+1;
}
}
return 0;
}
int main() {
SqList L;
InitList(L);
// printf("%d",L.MaxSize);
// IncreaseSize(L, 12);
// printf("%d",L.MaxSize);
// printf("%d\n",L.length);
InsertList(L,1,10);
// printf("length:%d\n",L.length);
// printf("data[0]:%d\n",L.data[0]);
ElemType e;
ListDelete(L, 1, e);
// printf("e:%d\n",e);
// printf("data[0]:%d\n",L.data[0]);
// printf("length:%d\n",L.length);
InsertList(L,1,1);
InsertList(L,2,2);
InsertList(L,3,3);
InsertList(L,4,4);
InsertList(L,5,5);
// ListDelete(L, 3, e);
// printf("%d",L.length);
printf("位置:%d",LocateElem(L,4));
return 0;
}
//静态顺序表的定义
#define Maxsize 10
typedef struct {
ElemType data[Maxsize];
int length;
}SqList;//静态定义
//void InitList(SqList &L){
// for (int i=0;i<Maxsize;i++ ){
// L.data[i]=0;
// }
// L.length=0;
//}
//
//int main() {
// SqList L;
// InitList(L);
// printf("%d",L.data[0]);
// return 0;
//}
//