//使用数组实现线性表
//为了简单起见,表中的数据都是int类型
#include<stdio.h>
#include<malloc.h>
//定义线性表数据类型
typedef struct List{
int data[100];//最多存放100个int
int last;//线性表最后一个元素的下标
}List,*PList;
//初始化线性表
PList MakeEmpty(){
//动态创建线性表
PList list = (PList)malloc (sizeof(List));
list->last=-1;//表示此时表中没有元素
return list;
}
//根据位序k,返回相应的元素
int FindKth(int K,PList list){
return list->data[K-1];
}
//在位序i插入一个新元素X
void Insert(int X,int i,PList list)
{
//1.从第i-1个元素开始,都往后移动一位(必须是从后面开始移动起)
int j;
for(j=list->last+1;j>=list->data[i-2];j--){
list->data[j]=list->data[j-1];
}
//2.插入元素
list->data[i-1]=X;
list->last++;
}
//删除指定位序i的元素
void Delete(int i,PList list){
//从第i+1个元素开始都往前移动一位
int j;
for(j=i-1;j<=list->last-1;j++)
{
list->data[j]=list->data[j+1];
}
list->last--;
}
//返回线性表的长度n
int Length(PList list) {
return list->last+1;
}
//遍历线性表中的值
void PrintList(PList list)
{
int p;
if(list->last==-1)
{
printf("线性表为空!");
}else{
for(p=0;p<=list->last;p++)
{
printf("%d\n",list->data[p]);
}
}
}
int main()
{
//1.创建一个空的线性表
PList list = MakeEmpty();
Insert(2,1,list);
Insert(3,2,list);
Insert(3,3,list);
Insert(5,4,list);
Delete(1,list);
Delete(4,list);
PrintList(list);
// printf("hello wordld");
return 0;
}