数据结构-线性表(List)1

    xiaoxiao2023-03-24  5

    线性表(list):零个或多个元素(相同的数据类型)的有限序列(有先后顺序)。 线性表的基本操作:

    线性表的基本操作: Operation: 返回值: InitList(*L) 建立一个空的线性表ListEmpty(L) 若为空,则返回true,否则返回falseClearList(*L) 清空list GetElem(L,i,*e) 返回第i个元素值给e,成功返1否返0LocateElem(L,e) 若有e,返回序号,否则返回0 ListInsert(*L,i,e) 插入元素eListDelete(*L,i,*e) 删除第i个元素,返回其值eListLength(L) 返回线性表元素个数

    1、 线性表的顺序存储结构:用一段地址连续的存储单元依次存储线性表的数据元素。 (C语言之typedef:ypedef可以看作type define的缩写,顾名思义就是类型定义,也就是说它只是给已有的类型重新定义了一个方便使用的别名,并没有产生新的数据类型。 typedef的使用与宏定义define有些许的相似,但两者又有以下不同: 1.与#define不同,typedef给出的符号名称仅限于对类型,而不是对值。 2.typedef的解释由编译器,而不是预处理器执行。 3.typedef比#define更灵活。) (结构体成员变量的访问,->前面放的是指针,而.前面跟的是结构体变量,如已定义了一个结构体struct student,里面有一个int a;然后有一个结构体变量struct student stu及结构体变量指针struct student *p;且有p=&stu,那么p->a(等价于(*p).a)和stu.a表示同一个意思。

    #include<stdio.h> /*线性表结构*/ #define MAXSIZE 20 typedef int ElemType; typedef struct{ ElemType data[MAXSIZE]; int length; }SqList; /***********/ /*查找*/ int GetElem(SqList L,int i,ElemType *e) { if(L.length==0||i<1||i>L.length) return 0; *e=L.data[i-1]; return 1; } /******/ /*插值*/ int ListInsert(SqList *L,int i,ElemType e) { int k; if(L->length==MAXSIZE) return 0; if(i<1||i>L->length+1) return 0; if(i<=L->length) { for(k=L->length;k>=i;k--) L->data[k]=L->data[k-1]; } L->data[i-1]=e; L->length++; return 1; } /******/ /*删除元素*/ int ListDelete(SqList *L,int i,ElemType *e) { int k; if(L->length==0) return 0; if(i<1||i>L->length) return 0; *e=L->data[i-1]; if(i<L->length) { for(k=i;k<L->length;k++) L->data[k-1]=L->data[k]; } L->length--; return 1; } /**********/ void main() { SqList L1; SqList *PL1; ElemType e1; ElemType *pe; int p = 0; int j; pe = &p;//注意,记得指针使用前需要初始化 PL1=&L1; for(j=0;j<10;j++) { L1.data[j]=j+10; } //e=&L1.data[5]; L1.length=10; GetElem(L1,5,pe); printf("GetElem 5 =%d\n",*pe);//printf("%d\n",p); ListInsert(PL1,5,555); ListDelete(PL1,6,pe); printf("GetElem 5 =%d\n",*pe); for(j=0;j<L1.length;j++) { printf("L1.data[%d]=%d\n",j,L1.data[j]); } getchar(); }
    转载请注明原文地址: https://ju.6miu.com/read-1202857.html
    最新回复(0)