大气网站背景图,企业年金什么时候可以提取,男男做受网站,个人网站鉴赏2019.10.10 【数据结构-线性表的顺序结构】
基本操作#xff1a;初始化#xff0c;判断是否空表#xff0c;清空表#xff0c;获取表中的第i个元素#xff0c;查找元素#xff0c;插入元素#xff0c;删除元素#xff0c;获取表的元素个数。
抽象数据类型#xff1a…2019.10.10 【数据结构-线性表的顺序结构】
基本操作初始化判断是否空表清空表获取表中的第i个元素查找元素插入元素删除元素获取表的元素个数。
抽象数据类型
#include stdio.h
#includemalloc.h
#includestdlib.h
#includestring.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否则返回false
bool ListEmpty(List L);//将线性表清空
Status ClearList(List L);//将线性表中地i个元素值返回给e
ElemType GetElem(List L, ElemType i, ElemType *e);//在线性表中查找与给定值e相等的元素如果查找成功返回该元素在表中的序号表示成功否则返回0表示失败
int LocateElem(List L, ElemType e);//在线性表第i个位置插入新元素e
bool 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否则返回false
bool 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个元素值返回给e
ElemType GetElem(List L, ElemType i, ElemType *e){if (i0 iL.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个位置插入新元素e
bool InsertList(List L, int i, ElemType e)
{if (i1 || iL.length 1) //判断i的范围是否有效{printf(位置无效\n);return false;}if (L.length MAXSIZE) //当前存储空间已满不能插入{printf(当前存储空间已满\n);return false;}//表中最后一个元素的下标是length-1再后一位是length for (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 (i0 || iL.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;
}