来自 技术 2019-04-17 的文章

C语言数据结构-顺序线性表的实现-初始化、销毁

1、数据结构-顺序线性表的实现-C语言

#define MAXSIZE 100//结构体定义typedef struct{ int *elem; //基地址 int length; //结构体当前长度 int listsize; //结构体最大长度} Sqlist; //结构体类型名//各项操作void Show_Help(){ printf("1---初始化线性表\n"); printf("2---销毁线性表\n"); printf("3---清空线性表\n"); printf("4---判断线性表是否为空\n"); printf("5---求线性表长度\n"); printf("6---获取线性表某位置元素\n"); printf("7---请输入元素的值,判断其在线性表中是否存在,并返回其下标,不存在则返回0\n"); printf("8---求直接前驱\n"); printf("9---求直接后继\n"); printf("10---在线性表指定位置插入元素\n"); printf("11---删除线性表指定位置元素\n"); printf("12---显示线性表全部元素\n"); printf("13---翻转线性表全部元素\n"); printf("退出,输入一个负数\n");}//初始化线性表void InitList(Sqlist* L){ L->elem = (int*) malloc(MAXSIZE*sizeof(int)); //给线性表分配初始空间 if(!(L->elem)){ printf("分配失败\n"); return ; } L->length = 0; L->listsize = MAXSIZE;}//销毁线性表void DestroyList(Sqlist* L){ if(L->elem) free(L->elem); //销毁只需释放刚才给基地址分配的空间即可 L->length = 0;}//清空线性表void ClearList(Sqlist* L){ L->length = 0;}//判断线性表是否为空int ListEmpty(Sqlist L){ if(L.length) return 0; else return 1;}//求线性表长度int ListLength(Sqlist L){ return L.length;}//获取线性表某位置元素void GetElem(Sqlist L,int i,int* e){ e = L.elem[i-1];}//请输入元素的值,判断其在线性表中是否存在,并返回其下标,不存在则返回0int LocateElem(Sqlist L,int e){ int position = 0; for(int i=0; i<L.length; i++) { if(L.elem[i] == e) { position = i+1; break; } } return position;}//求直接前驱void PriorElem(Sqlist L,int cur_e,int* pre_e){ pre_e = L.elem[cur_e-2];}//求直接后继void NextElem(Sqlist L,int cur_e,int* next_e){ next_e = L.elem[cur_e];}//在线性表指定位置插入元素void ListInsert(Sqlist* L,int i,int e){ for(int j=L->length; j>=i; j--) { L->elem[j] = L->elem[j-1]; } L->elem[i-1] = e; L->length++;}//删除线性表指定位置元素void ListDelete(Sqlist* L,int i){ for(int j=i-1; j<L->length-1; j++) { (*L).elem[j] = (*L).elem[j+1]; } L->length--;}//显示线性表全部元素void TraverList(Sqlist L){ printf("线性表中的元素有:"); for(int i=0; i<L.length; i++) { printf("%d ",L.elem[i]); } printf("\n");}//翻转线性表全部元素void Flip(Sqlist L){ int num = L.length / 2; int* begin = &L.elem[num-1]; int* end = &L.elem[L.length-num]; int middle; while(num) { middle = *begin; *begin = *end; *end = middle; num--; begin = &L.elem[num-1]; end = &L.elem[L.length-num]; } printf("翻转成功\n");}

欢迎转载,转载请标明出处哦

标签:   linux代码复制      cdn加速动态请求   
上一篇:ps反向选区快捷键是什么?
下一篇:没有了