第3周项目1(1)- 顺序表的基本运算
(1)目的是要测试“建立线性表”的算法CreateList,为查看建表的结果,需要实现“输出线性表”的算法DispList。在研习DispList中发现,要输出线性表,还要判断表是否为空,
(2)在已经创建线性表的基础上,求线性表的长度ListLength、求线性表L中指定位置的某个数据元素GetElem、查找元素LocateElem的算法都可以实现了。就在原程序的基础上增加:
增加求线性表的长度ListLength的函数并测试;
增加求线性表L中指定位置的某个数据元素GetElem的函数并测试;
增加查找元素LocateElem的函数并测试;
代码:
- #include <stdio.h>
- #include <malloc.h>
- #define MaxSize 50
- typedef int ElemType;
- typedef struct
- {
- ElemType data[MaxSize];
- int length;
- }SqList;
- void CreateList(SqList *&L,ElemType a[],int n);
- void DispList(SqList *L);
- bool ListEmpty(SqList *L);
- int ListLength(SqList *L);
- bool GetElem(SqList *L,int i,ElemType &e);
- int LocateElem(SqList *L, ElemType e);
- int main()
- {
- SqList *sq;
- ElemType x[6]= {5,8,7,2,4,9};
- ElemType a;
- int loc;
- CreateList(sq, x, 6);
- DispList(sq);
- printf("表长度:%d\n", ListLength(sq)); //测试求长度
- if(GetElem(sq, 3, a)) //测试在范围内的情形
- printf("找到了第3个元素值为:%d\n", a);
- else
- printf("第3个元素超出范围!\n");
- if(GetElem(sq, 7, a)) //测试不在范围内的情形
- printf("找到了第7个元素值为:%d\n", a);
- else
- printf("第7个元素超出范围!\n");
- if((loc=LocateElem(sq, 8))>0) //测试能找到的情形
- printf("找到了,值为8的元素是第 %d 个\n", loc);
- else
- printf("值为8的元素没有找到!\n");
- if((loc=LocateElem(sq, 17))>0) //测试不能找到的情形
- printf("找到了,值为17的元素是第 %d 个\n", loc);
- else
- printf("值为17的元素没有找到!\n");
- return 0;
- }
- void CreateList(SqList *&L,ElemType a[],int n)
- {
- int i;
- L=(SqList *)malloc(sizeof(SqList));
- for(i=0;i<n;i++)
- {
- L->data[i]=a[i];
- }
- L->length=n;
- }
- void DispList(SqList *L)
- {
- int i;
- for(i=0;i<L->length;i++)
- {
- printf("%d",L->data[i]);
- }
- printf("\n");
- }
- bool ListEmpty(SqList *L)
- {
- return(L->length==0);
- }
- int ListLength(SqList *L)
- {
- return(L->length);
- }
- bool GetElem(SqList *L,int i,ElemType &e)
- {
- if (i<1 || i>L->length)
- return false;
- e=L->data[i-1];
- return true;
- }
- int LocateElem(SqList *L, ElemType e)
- {
- int i=0;
- while (i<L->length && L->data[i]!=e) i++;
- if (i>=L->length)
- return 0;
- else
- return i+1;
- }
结果:
学习心得:
- 自己无从下手的时候一定要请教他人
- “借力”的作用很大,“抄之有道”,最终结果还需自己去消化
- 自行完成代码的运行实现有助于自己对代码的理解,多自己动手比