#include<stdio.h>
typedef struct{
ElementType Data[MAXSIZE];
int Last;
} List;
void main{
//1 初始化 建立空的順序表
List *MakeEmpty(){
List *PtrL;
PtrL = (List *)malloc(sizeof(List));
PtrL->Last = -1;
return PtrL;
}
//2 查找
int find(ElementType x,List *PtrL){
int i=0;
while(i <= PtrL->Last && PtrL->Data[i] != x)
i++;
if(i > PtrL->Last) return -1; //如果沒有找到 返回-1
else return i; //如果找到了 返回的是存儲位置
}
}
//3 插入(第i(1<=i<=n+1)個位置插入一個值爲x的新元素)
//在進行插入的操作時 得先把第i開始的數爲後移一位 再對空出來的第i位進行賦值
void Insert(ElementType x,List *PtrL){
int j;
//檢測表是否滿了
if(PtrL->Last == MAXSIZE-1){
printf("表滿");
return;
}
//i的值小於1或者i的值大於表長
if(i<1 ||i> PtrL->Last+2){
printf("位置不合法");
return;
}
//移動並且插入
for(j=PtrL->Last;j>=i-1;j--){
PtrL->Data[j+1] = PtrL->Data[j]; //將第i到last的值倒序向後移動
PtrL->Data[i-1] = x;
PtrL->Last++;
return ;
}
}
//4 刪除(刪除表的第i(1<=i<=n)個位置上的數)
//這裏跟添加類似 只不過是第i個數開始往前移動 不需要額外 "刪除這個動作"
void Delete(int i,List *PtrL){
int j;
if(i<1||i>PtrL->Last+1){
printf("不存在第%d個元素\n",i );
return ;
}
for(j=i;j<PtrL->Last;j++){
PtrL->Data[j-1] = PtrL->Data[j]; //將a_i+1--a_n順序向前移動
PtrL->Last --; //Last仍指向最後元素
return ;
}
}
數據結構:線性表
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.