From 9ad70a594bbfeeb7004463560721b3e989c1d965 Mon Sep 17 00:00:00 2001 From: callmePicacho <38685653+callmePicacho@users.noreply.github.com> Date: Tue, 23 Aug 2022 22:01:51 +0800 Subject: [PATCH] =?UTF-8?q?Update=202.=E6=95=B0=E7=BB=84=E5=AD=98=E5=82=A8?= =?UTF-8?q?=E7=9A=84=E7=BA=BF=E6=80=A7=E8=A1=A8.c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix bug --- 上课Demo/2.数组存储的线性表.c | 84 +++++++++++++++++------------------ 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/上课Demo/2.数组存储的线性表.c b/上课Demo/2.数组存储的线性表.c index ad67bff..28f9c6c 100644 --- a/上课Demo/2.数组存储的线性表.c +++ b/上课Demo/2.数组存储的线性表.c @@ -1,24 +1,24 @@ #include #include -#define MAXSIZE 100 // MAXSIZE Ϊ Data ĴС -typedef int ElementType; // ElementType ɶΪ +#define MAXSIZE 100 // MAXSIZE 定义为 Data 数组的大小 +typedef int ElementType; // ElementType 可定义为任意类型 typedef struct LNode *List; struct LNode{ ElementType Data[MAXSIZE]; - int Last; // Last ԱһԪ + int Last; // Last 定义线性表的最后一个元素 }; List L; -//±Ϊ i ԪأL->Data[i] -//ԱijȣL->Last+1 +//访问下标为 i 的元素:L->Data[i] +//线性表的长度:L->Last+1 -List MakeEmpty(); //ʼ˳ -int Find(ElementType X,List L); // X һγֵ± -void Insert(ElementType X,int i,List L); //±Ϊ i ĵط X -void Delete(int i,List L); //ɾ±Ϊ i ĵǰֵ -ElementType FindKth(int K,List L); //±Ϊ K ĵǰֵ -int Length(List L); //˳ij +List MakeEmpty(); //初始化顺序表 +int Find(ElementType X,List L); //查找 X 第一次出现的下标 +void Insert(ElementType X,int i,List L); //在下标为 i 的地方插入 X +void Delete(int i,List L); //删除下标为 i 的当前值 +ElementType FindKth(int K,List L); //返回下标为 K 的当前值 +int Length(List L); //返回顺序表的长度 -//ʼ +//初始化 List MakeEmpty(){ List L; L = (List)malloc(sizeof(struct LNode)); @@ -26,58 +26,58 @@ List MakeEmpty(){ return L; } -// ֵ +// 按值查找 int Find(ElementType X,List L){ int i=0; while(i <= L->Last && L->Data[i] != X) i++; - if(L->Last < i) //ûҵ -1 + if(L->Last < i) //如果没找到,返回 -1 return -1; - else // ҵ󷵻± + else // 找到后返回下标 return i; } -// +// 插入 void Insert(ElementType X,int i,List L){ int j; - if(L->Last == MAXSIZE-1){ //λ - printf(""); + if(L->Last == MAXSIZE-1){ //位置已满 + printf("表满"); return; } - if(i < 0 || L->Last+1 < i){ //λԽ磬 L->Data[L->Last+1]涼λ - printf("λòϷ"); + if(i < 0 || L->Last+1 < i){ //位置越界,如果将数插入 L->Data[L->Last+1],下面都不用腾位置了 + printf("位置不合法"); return; } - for(j=L->Last;j>=i;j--) // ӺǰŲһ a[i]ڳλ + for(j=L->Last;j>=i;j--) // 从后往前依次向后挪一个,给 a[i]腾出位置 L->Data[j+1] = L->Data[j]; - L->Data[i] = X; //Ԫز - L->Last++; // LastȻָԪ + L->Data[i] = X; //新元素插入 + L->Last++; // Last仍然指向最后元素 return; } -//ɾ +//删除 void Delete(int i,List L){ int j; - if(i < 0 || L->Last Data[L->Last] - printf("L->Data[%d]Ԫ",i); + if(i < 0 || L->Last Data[L->Last] + printf("L->Data[%d]不存在元素",i); return; } - for(j=i;j<=L->Last;j++) // ǰǰŲһ a[i] + for(j=i+1;j<=L->Last;j++) // 从前往后依次向前挪一个,将 a[i] 覆盖了 L->Data[j-1] = L->Data[j]; - L->Last--; // LastȻָԪ + L->Last--; // Last仍然指向最后元素 return; } -// +// 按序查找 ElementType FindKth(int K,List L){ - if(K < 0 || L->Last < K){ //λԽ - printf("L->Data[%d]Ԫ",K); + if(K < 0 || L->Last < K){ //位置越界 + printf("L->Data[%d]不存在元素",K); return; } return L->Data[K]; } -// +//表长 int Length(List L){ return L->Last+1; } @@ -86,24 +86,24 @@ int main(){ int i=0; L = MakeEmpty(); Insert(11,0,L); - printf("ԱL-Data[0]11\n"); + printf("在线性表L-Data[0]插入11\n"); Insert(25,0,L); - printf("ԱL-Data[0]25\n"); + printf("在线性表L-Data[0]插入25\n"); Insert(33,0,L); - printf("ԱL-Data[0]33\n"); + printf("在线性表L-Data[0]插入33\n"); Insert(77,0,L); - printf("ԱL-Data[0]77\n"); - printf("ʱԱΪ"); + printf("在线性表L-Data[0]插入77\n"); + printf("此时的线性表为:"); for(i=0;iData[i]); printf("\n"); - printf("ֵΪ12±ǣ%d\n",Find(12,L)); - printf("±Ϊ3Աֵǣ%d\n",FindKth(3,L)); + printf("查找值为12的下标是:%d\n",Find(12,L)); + printf("下标为3的线性表的值是:%d\n",FindKth(3,L)); Delete(2,L); - printf("ɾԱ±Ϊ2Ԫ\n"); + printf("删除线性表中下标为2的元素\n"); Delete(2,L); - printf("ɾԱ±Ϊ2Ԫ\n"); - printf("ʱԱΪ"); + printf("删除线性表中下标为2的元素\n"); + printf("此时的线性表为:"); for(i=0;iData[i]); printf("\n");