#include <stdio.h>
#include <stdlib.h>
#define ElementType int
const int MAXSIZE = 100;
typedef struct{
ElementType Data[MAXSIZE];
int Last;
}List;//list在前面和后面效果是一样的
List *MakeEmpty();
ElementType FindKth(int K, List *PtrL);
int Find(ElementType X,List *PtrL);
void Insert(ElementType X, int i, List *PtrL);
void Delete(int i, List *PtrL);
int Length(List *PtrL);
void LPrint(List *PtrL){
for(int i = 0; i<PtrL->Last;i++)
printf("%d
",PtrL->Data[i]);
}
int main(){
List L,*PtrL;//访问下标为i的元素 L.Data[i]或Ptrl->Data[i]
//线性表的长度:L.Last+1或Ptrl->Last+1
PtrL = MakeEmpty();
for(int i = 0; i< 10;i++){
Insert(i,i,PtrL);
}
Insert(15,5,PtrL);
LPrint(PtrL);
Delete(5,PtrL);
LPrint(PtrL);
return 0;
}
//初始化,建立空的顺序表
List *MakeEmpty(){
List *PtrL;
PtrL = (List *)malloc(sizeof(List));
PtrL->Last=0;
return PtrL;
}
ElementType FindKth(int K, List L){//查找第K个元素
return L.Data[K-1];
}
int Find(ElementType X,List L){
List *PtrL = &L;
int i = 0;
for(i =0;i<=PtrL->Last;i++)
if(PtrL->Data[PtrL->Last]==X)
break;
if(i>PtrL->Last)
return -1;
else
return i;
}
void Insert(ElementType X, int i, List *PtrL){//按第i个位置处理 ,L.Data[i-1]上插入 ;第一个元素是L.last[L.last+1]
if(i<1||i>PtrL->Last+2){
printf("插入位置不合理
");
return;
}
for (int j = PtrL->Last;j>=i-1;j--)
PtrL->Data[j+1]=PtrL->Data[j];
PtrL->Data[i-1]=X;
PtrL->Last++;
return;
}
void Delete(int i, List *PtrL){//按第i个位置处理 ,删除L.Data[i-1];最后一个元素为L.Data[L.last]
if(i<1||i>PtrL->Last){
printf("删除位置不合理
");
return;
}
int j;
for(j=i;j<PtrL->Last;j++)
PtrL->Data[j-1]=PtrL->Data[j];
PtrL->Last--;
}
int Length(List *PtrL){
return PtrL->Last+1;
}