数组模拟线性表

//使用数组实现线性表
//为了简单起见,表中的数据都是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;
}
posted @ 2023-11-17 15:59  一往而深,  阅读(7)  评论(0编辑  收藏  举报