数据结构程序题举例实验一线性表

上传人:自*** 文档编号:80430089 上传时间:2019-02-19 格式:DOC 页数:3 大小:37KB
返回 下载 相关 举报
数据结构程序题举例实验一线性表_第1页
第1页 / 共3页
数据结构程序题举例实验一线性表_第2页
第2页 / 共3页
数据结构程序题举例实验一线性表_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《数据结构程序题举例实验一线性表》由会员分享,可在线阅读,更多相关《数据结构程序题举例实验一线性表(3页珍藏版)》请在金锄头文库上搜索。

1、实验一 线性表一、课本与实验都有的程序内容为:1 线性表的顺序存储结构的定义#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef struct ElemType *elem; int length; int listsize;SqList;2 c语言实现Status InitList_Sq(SqList *L) /* 算法2.3 */ /* 构造一个空的线性表L。 */ L-elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType); if (!L-elem) exit(OVE

2、RFLOW); /* 存储分配失败 */ L-length = 0; /* 空表长度为0 */ L-listsize = LIST_INIT_SIZE; /* 初始存储容量 */ return OK; /* InitList_Sq */ Status ListInsert_Sq(SqList *L, int i, ElemType e) /* 算法2.4 */ /* 在顺序线性表L的第i个元素之前插入新的元素e, */ /* i的合法值为1iListLength_Sq(L)+1 */ ElemType *p,*q; if (i L-length+1) return ERROR; /* i值不合

3、法 */ if (L-length = L-listsize) /* 当前存储空间已满,增加容量 */ ElemType *newbase = (ElemType *)realloc(L-elem, (L-listsize+LISTINCREMENT)*sizeof (ElemType); if (!newbase) return ERROR; /* 存储分配失败 */ L-elem = newbase; /* 新基址 */ L-listsize += LISTINCREMENT; /* 增加存储容量 */ q = &(L-elemi-1); /* q为插入位置 */ for (p = &(L

4、-elemL-length-1); p=q; -p) *(p+1) = *p; /* 插入位置及之后的元素右移 */ *q = e; /* 插入e */ +L-length; /* 表长增1 */ return OK; /* ListInsert_Sq */Status ListDelete_Sq(SqList *L, int i, ElemType *e) /* 算法2.5 */ /* 在顺序线性表L中删除第i个元素,并用e返回其值。 */ /* i的合法值为1iListLength_Sq(L)。 */ ElemType *p, *q; if (iL-length) return ERROR

5、; /* i值不合法 */ p = &(L-elemi-1); /* p为被删除元素的位置 */ *e = *p; /* 被删除元素的值赋给e */ q = L-elem+L-length-1; /* 表尾元素的位置 */ for (+p; plength; /* 表长减1 */ return OK; /* ListDelete_Sq */int LocateElem_Sq(SqList L, ElemType e, Status (*compare)(ElemType, ElemType) /* 算法2.6 */ /* 在顺序线性表L中查找第1个值与e满足compare()的元素的位序。 *

6、/ /* 若找到,则返回其在L中的位序,否则返回0。 */ int i; ElemType *p; i = 1; /* i的初值为第1个元素的位序 */ p = L.elem; /* p的初值为第1个元素的存储位置 */ while (i = L.length & !(*compare)(*p+, e) +i; if (i length = L-listsize) ElemType *newbase = (ElemType *)realloc(L-elem, (L-listsize+LISTINCREMENT)*sizeof (ElemType); if (!newbase) return E

7、RROR; L-elem = newbase; L-listsize += LISTINCREMENT; q = &(L-elemi-1); for (p = &(L-elemL-length-1); p=q; -p) *(p+1) = *p; *q = e; ; return OK; /* ListInsert_Sq */答案:该算法完成线性表的插入功能,在L指针所指向的顺序表中第i个元素之前插入新的元素e,i的合法值为1iListLength_Sq(L)+1 (2分)有下划线的语句的作用是:插入位置及之后的元素右移 (3分)1 i L-length+1 (3分)2 +L-length (3分) 2算法填空:完成顺序线性表中删除第i个元素的算法。(每空3分,共9分) Status ListDelete_Sq(SqList *L, int i, ElemType *e) ElemType *p, *q; If( ) return ERROR; p = &(L-elemi-1); *e = *p; q = L-elem+L-length-1; for (+p; p=q; +p) ; ; return OK; /* ListDelete_Sq */答案:(iL-length) (3分)*(p-1) = *p; (3分)-L-length; (3分)

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 试题/考题 > 初中试题/考题

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