抑郁症健康,内容丰富有趣,生活中的好帮手!
抑郁症健康 > 【数据结构基础】-线性表的顺序实现(数组实现)基本操作

【数据结构基础】-线性表的顺序实现(数组实现)基本操作

时间:2019-06-03 21:02:26

相关推荐

.10.10

【数据结构-线性表的顺序结构】

基本操作:初始化,判断是否空表,清空表,获取表中的第i个元素,查找元素,插入元素,删除元素,获取表的元素个数。

抽象数据类型:

#include <stdio.h>#include<malloc.h>#include<stdlib.h>#include<string.h>//数据结构-线性表的顺序表示和实现#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define MAXSIZE 100 //定义线性表的最大长度typedef int Status;//Status是函数的类型,其值是函数的结果状态码typedef int ElemType;//顺序表存储元素类型,考虑到可移植性,若改变存储类型,只需要修改这一处,默认为int类型typedef struct MyStruct{ElemType data[MAXSIZE];//存储空间地址int length;//当前长度}List;//初始化操作,建立一个空的线性表Status InitList(List &L);//打印线性表的所有元素void PrintList(List L);//若线性表为空,则返回true,否则返回falsebool ListEmpty(List L);//将线性表清空Status ClearList(List &L);//将线性表中地i个元素值返回给eElemType GetElem(List L, ElemType i, ElemType *e);//在线性表中查找与给定值e相等的元素,如果查找成功,返回该元素在表中的序号表示成功;否则,返回0表示失败int LocateElem(List L, ElemType e);//在线性表第i个位置插入新元素ebool InsertList(List &L, ElemType i, ElemType e);//删除线性表中第i个元素,并用e返回其值Status ListDelete(List &L, ElemType i, ElemType &e);//返回线性表L的元素的个数int ListLength(List L);int main() {List list1, list2;//初始化ListInitList(list1);//判断list是否为空if (ListEmpty(list1)){printf("该线性表为空\n");}else {printf("该线性表不为空\n");}//给线性表插入元素printf("给线性表插入元素...");InsertList(list1, 1, 1);InsertList(list1, 2, 2);InsertList(list1, 3, 3);//打印线性表中的元素PrintList(list1);//查找1在线性表中的序号printf("整数1在线性表中的序号: %d\n", LocateElem(list1, 1));//返回线性表中的元素个数printf("list1线性表中元素个数为:%d\n", ListLength(list1));//删除线性表中的元素int num;ListDelete(list1, 1, num);//打印线性表中的元素PrintList(list1);//返回线性表中的元素个数printf("list1线性表中元素个数为:%d\n", ListLength(list1));system("pause");return 0;}//初始化操作,建立一个空的线性表Status InitList(List &L) {L.length = 0;return OK;}//打印线性表的所有元素void PrintList(List L){if (L.data == NULL) {exit(0);}printf("该线性表的元素为: ");for (int i = 0; i < L.length ; i++){printf("%d ", L.data[i]);}printf("\n");}//若线性表为空,则返回true,否则返回falsebool ListEmpty(List L){if (L.data == NULL){return false;}else{return true;}}//将线性表清空Status ClearList(List &L){if (L.data != NULL){free(L.data);}return OK;}//将线性表中地i个元素值返回给eElemType GetElem(List L, ElemType i, ElemType *e){if (i<0 && i>L.length){//输入的i有误return ERROR;}*e = L.data[i - 1];return OK;}//在线性表中查找与给定值e相等的元素,如果查找成功,返回该元素在表中的序号表示成功;否则,返回0表示失败int LocateElem(List L, ElemType e){for (int i = 0; i < L.length; i++){if (L.data[i] == e) {return i + 1;//注意:返回的是该元素在线性表的序号,并非下标!}else{return 0;}}}//在线性表第i个位置插入新元素ebool InsertList(List &L, int i, ElemType e){if (i<1 || i>L.length + 1)//判断i的范围是否有效{printf("位置无效!\n");return false;}if (L.length >= MAXSIZE)//当前存储空间已满,不能插入{printf("当前存储空间已满!!!\n");return false;}//表中最后一个元素的下标是length-1,再后一位是lengthfor (int j = L.length; j >= i; j--)L.data[j] = L.data[j - 1];L.data[i - 1] = e;//在位置i处放入eL.length++;//线性表长度加1return true;}//删除线性表中第i个元素,并用e返回其值Status ListDelete(List &L, ElemType i, ElemType &e){if (i<0 || i>L.length){//输入的序号错误!return ERROR;}e = L.data[i - 1];//将被删除的元素赋值给e,通过e返回其值for (int j = i; j <= L.length - 1; j++) {L.data[j - 1] = L.data[j];}L.length--;return OK;}//返回线性表L的元素的个数int ListLength(List L){return L.length;}

如果觉得《【数据结构基础】-线性表的顺序实现(数组实现)基本操作》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。