順序表實現的源碼

#include<stdio.h>數組

#include<stdlib.h>code

#define MAXSIZE 10it

//定義類型 typedef int DataType;io

//定義結構體 typedef struct { DataType list[MAXSIZE];//d定義DateType類型的數組變量

int size;//y用於記錄數據的個數

} SeqList;List

void InitList(SeqList *l);//初始化循環

int length(SeqList l);//線性表的長度數據

int InsertList(SeqList *l,int i,DataType x);//在第i個元素前插入0<=i<sizedi

int DeleteList(SeqList *l,int i,DataType *x);//刪除第i個元素co

DataType GetElement(SeqList *l,int i);//獲得第i個元素

int main(void) {

SeqList l;

InitList(&l);

int j;//定義循環變量 
for(j=0;j<10;j++){
InsertList(&l,j,j+1); 	
}

printf("取得%d\n",GetElement(&l,1));

int x=0; DeleteList(&l,9,&x); printf("%d\n",length(l));

int i;//定義循環變量 

for(i=0;i<l.size;i++){
	printf("打印%d\n",l.list[i]);
}

}

void InitList(SeqList* l){ l->size=0; }

int length(SeqList l){ return l.size;

}

int InsertList(SeqList * l,int i,DataType x){

//將i能夠理解爲將x插入i個元素前插入,也能夠理解爲將x插入list[i]中 

if(i<0||i>MAXSIZE){
	printf("輸入的位置有誤\n");
	printf("插入失敗\n");
	return 0;
}

if(i==MAXSIZE){
	printf("順序表已滿\n");
		printf("插入失敗\n");
	return 0;
}

int j;//定義循環變量
for(j=l->size;j>i;j--)
l->list[j]=l->list[j-1]; 

l->list[i]=x;//將要插入的元素插入

l->size++;//將書序表的長度加1 
	printf("插入成功\n");
return 1;

}

int DeleteList(SeqList *l,int i,DataType *x){ if(i<0||i>=MAXSIZE){ printf("刪除位置有誤\n"); printf("刪除失敗\n"); return 0; }

if(l->size==0){
	printf("表空,沒法刪除\n");
		printf("刪除失敗\n");
	return 0;
}

int j;//設置循環變量
*x=l->list[i];
for(int j=i;j<l->size-1;j++){
	l->list[j]=l->list[j+1];
} 
l->size--;
printf("刪除成功\n");
return 1;

}

DataType GetElement(SeqList* l,int i){

return l->list[i];

}

相關文章
相關標籤/搜索