首页 > 代码库 > C语言顺序表完整实现

C语言顺序表完整实现

#include <stdio.h>
#include <stdlib.h>
#define ElementType int
#define 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\n",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){
	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("插入位置不合理\n");
		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("删除位置不合理\n");
		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;
} 

  

C语言顺序表完整实现