数据结构线性表基本操作(c语言)

上传人:第*** 文档编号:34075310 上传时间:2018-02-20 格式:DOCX 页数:7 大小:18.15KB
返回 下载 相关 举报
数据结构线性表基本操作(c语言)_第1页
第1页 / 共7页
数据结构线性表基本操作(c语言)_第2页
第2页 / 共7页
数据结构线性表基本操作(c语言)_第3页
第3页 / 共7页
数据结构线性表基本操作(c语言)_第4页
第4页 / 共7页
数据结构线性表基本操作(c语言)_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《数据结构线性表基本操作(c语言)》由会员分享,可在线阅读,更多相关《数据结构线性表基本操作(c语言)(7页珍藏版)》请在金锄头文库上搜索。

1、#include#include#include#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;typedef int ElemType;#define LIST_INIT_SIZE100#define LISTINCREMENT 10typedef structElemType *elem;int length;int listsize;SqList;Status InitList_Sq(SqList *L);

2、/构造空的线性表void DestroyList_Sq(SqList *L); /销毁一个线性表void ClearList_Sq (SqList *L); /将 L 置为空表Status ListEmpty_Sq (SqList L); /空表返回 TRUEStatus ListLength_Sq (SqList L); / 返回元素个数Status GetElem_Sq (SqList L, int i, ElemType *e); /用 e 返回第 i 个元素 算法 2.2中使用Status LocateElem_Sq(SqList L, ElemType e, Status (* co

3、mpare)(ElemType, ElemType); / 在 L 中找到一个值与 e 满足 compare()的元素的位序Status PriorElem_Sq(SqList L, ElemType cur_e, ElemType *pre_e);/用 pre_e 返回 cur_e 的前驱Status NextElem_Sq(SqList L, ElemType cur_e, ElemType *next_e);/用 next_e 返回 cur_e 的后继Status ListInsert_Sq(SqList *L, int i, ElemType e); /在第 i 位插入新的元素 eSt

4、atus ListDelete_Sq(SqList *L, int i, ElemType *e); /删除第 i 个元素 用 e 返回/算法 2.3Status InitList_Sq(SqList *L) / 构造空的线性表L-elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType);if (! L-elem)printf(构造失败!n);exit(OVERFLOW);L-length = 0;L-listsize = LIST_INIT_SIZE;printf(构造成功!n);return OK;void DestroyLis

5、t_Sq(SqList *L) / 销毁一个线性表if (L-elem != NULL)free (L-elem);L-elem = NULL;L-length = 0;L-listsize = 0;printf(已销毁线性表!n);void ClearList_Sq (SqList *L) /将 L 置为空表if(L-elem != NULL)L-length = 0;printf(已将 L 置为空表!n);Status ListEmpty_Sq (SqList L) / 空表返回 TRUEif (L.elem != NULL)if (L.length = 0)printf(是空表n);re

6、turn TRUE;elseprintf(不是空表n);return FALSE;elseexit(ERROR);Status ListLength_Sq (SqList L) / 返回元素个数if (L.elem != NULL)return L.length;elsereturn ERROR;Status GetElem_Sq (SqList L, int i, ElemType *e) /用 e 返回第 i 个元素 算法 2.2中使用if (ListEmpty_Sq(L)printf(为空表!n);return ERROR;if (i L.length)printf(不存在地%d 个位置

7、!n, i);return ERROR;*e = L.elemi - 1;return OK;/算法 2.6Status LocateElem_Sq(SqList L, ElemType e, Status (* compare)(ElemType, ElemType) / 在 L 中找到一个值与 e 满足 compare()的元素的位序int i = 1;int *p = L.elem;while (i L-length +1)return ERROR;if (L-length = L-listsize)newbase = (ElemType *)realloc(L-elem, (L-lis

8、tsize + LISTINCREMENT)*sizeof(ElemType);if (! newbase)exit(OVERFLOW);L-elem = newbase;L-listsize += LISTINCREMENT;q = for (p = p-)*(p + 1) = * p;*q = e;+L-length;return OK;/算法 2.5Status ListDelete_Sq(SqList *L, int i, ElemType *e) /删除第 i 个元素 用 e 返回ElemType *p, *q;if (i L-length)return ERROR;p = *e =

9、 *p;q = L-elem + L-length - 1;for (+ p; p length;return OK ;Status main(void)SqList L;ElemType i, n = 0, e = 0, cur_e = 0, pre_e = 0, next_e = 0;char ch;printf(初始化线性表);InitList_Sq(printf(是否销毁线性表 L? YORN );ch = getchar();if (ch = Y)DestroyList_Sq(return 0;elseClearList_Sq(for (i = 1; i = LISTINCREMEN

10、T; i +)L.elemi - 1 = i;L.length +;printf(线性表内初始数值为:n);for (i = 1; i = LISTINCREMENT; i +)printf(%4d, L.elemi - 1);printf(n);n = ListLength_Sq (L);printf(线性表内元素个数为 %3dn, n);printf(欲知道第 i 位数字 i = );scanf(%d, GetElem_Sq(L, i, printf(第%d 位数字为%dn, i, e);cur_e = e;PriorElem_Sq(L, cur_e, printf(%d 的前驱是%dn,

11、 cur_e, pre_e);NextElem_Sq(L, cur_e, printf(%d 的后继是%dn, cur_e, next_e);printf(请输入要插入的位数和要插入的数字:);scanf(%d %d, ListInsert_Sq(printf(插入后线性表内%d 个数据为:n, L.length);for (i = 1; i = L.length; i +)printf(%4d, L.elemi - 1);printf(n);ListDelete_Sq(printf(删除线性表中第%d 个数据%d 后,线性内%d 个数据为:n, n, e, L.length);for (i = 1; i = L.length; i +)printf(%4d, L.elemi - 1);printf(n);return 0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号