常量声明及定义

上传人:cl****1 文档编号:558268402 上传时间:2023-07-28 格式:DOCX 页数:7 大小:26.50KB
返回 下载 相关 举报
常量声明及定义_第1页
第1页 / 共7页
常量声明及定义_第2页
第2页 / 共7页
常量声明及定义_第3页
第3页 / 共7页
常量声明及定义_第4页
第4页 / 共7页
常量声明及定义_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《常量声明及定义》由会员分享,可在线阅读,更多相关《常量声明及定义(7页珍藏版)》请在金锄头文库上搜索。

1、常量声明及定义#include #include #include #include /线性列表初始容量人小。/每次增加的容量人小。#define LIST_INIT_SIZE 100#define LISTINCREMENT 10define TRUE1define FALSE0define OK1/线性列表首地址(基地址)。/目前线性列表的长度。/线性列表的容量(最人长度)。#define ERROR define CANCEL /Hhst.cppH /#iiiclude nhead.hn H结构体声明 tvpedef stmctiiit *elem;mt length; mt lists

2、ize;sqlist;/ 操作函数/ 函数说明:线性列表初始化,构造一个空的线性表。类似于类的构造函数mt uiitlist(sqlist &L)L.elem=(int *)nialloc(LIST_INIT_SIZE*sizeof(mt); / 分配一块新的内存空间,每个内存块人小4个字节,默认100个内存块空间。if(! L.elem) return ERROR;函数,并返回值ERROR。L. length = 0;表的初始长度置为0。L.hstsize = LIST_INIT_SIZE;100oleturn OK;/如果内存空间分配失败,则退出/如果内存空间分配成功,则将线性列/设定线性

3、列表的容量为默认值/内存空间分配成功,返回值OKo函数说明:销毁线性表L。类似于类的析构函数 mt destioylist(sqlist &L)/释放线性列表所占用的内存空fiee(L.elem);间。L.elem = NULL;L. length = 0;L.listsize = 0; return OK;函数说明:将L重置为空表,仅仅将列表长度置0而已。iiit cleailist(sqlist &L)/线性列表当前长度置0。Length=O; return OK;函数说明:判断当前函数是否为空,是则返回TRUE,否则返回FALSE iiit listempty(sqlist L)if (

4、0 = L.lengtli) return TRUE;/当前线性列表长度为0,即空。leturn FALSE;else函数说明:得到当前线性列表的长度 iiit listlength(sqlist L)/否则非空。return L.length;函数说明:得到线性列表中指定位置的值 iiit geteleni(sqlist L.iiit i.iiit &e)/返回当前线性列表的长度。if(iL.length) exit(ERROR); 度范I韦I之内,没有则直接退岀函数。e= *(L.elem+i-l);return OK;函数说明:得到指定值的序号。不存在则返回FALSE iiit loca

5、teelem(sqlist L,mt e.mt(*compaie)(mt xl,mt x2)/判断指定位置是否处于线性列表的长/取得指定位置中的元素值。inti = l,j = 0;int *p = NULL;为NULL,否则容易内存出错。 p = L.elem;p中。while(i=Llength & !j)/定义指针建议赋初值,一般/保存当前线性列表基地址在指针逐个查找满足要求的元素值。j=compaie(*p+,e); +i;if(i=L.length) leturn i-1; 返回该元素的位置。else/若存在满足条件的元素,则leturn FALSE;/否则返回FALSEo函数说明:

6、查找指定元素值的前一个元素值iiit priorelem(sqlist Ljnt curejnt &pre_e)/若 cui_e 是L 的数据元素,且不是第一个,则用 pre_e 返回它的前驱,否则操作失败,pe_e无定义mt i = 2;int *p = NULL;p = L.elem+1;wlule(iL.length)return FALSE;返回FALSE oelse/指向线性列表的第2个元素内存地址。/从线性列表的第2个元素开始,/如杲没有查找到满足条件的元素,则pre.e = *p-2;如果有满足条件的元素,则将元素值赋予变量pre_eretuni OK;函数说明:查找指定元素值的

7、后一个元素值。iiit nextelem(sqlist Liiit cui_e,int &next_e)/若 cur_e 是 L 的数据元素,且不是最后一个,则用 next_e返回它的后继,否则操作失败,next_e无定义inti = 1;int *p = NULL; p = L.elem;地址。wlule(i=L.length) return FALSE;返回FALSE o/指向线性列表的第1个元素内存/从线性列表的第1个元素开始,/如杲没有查找到满足条件的元素,则/如果有满足条件的元素,则将其next_e = *p;值赋予变量next_earetuni OK;函数说明:在线性列表指定位置插

8、入元素mt listiiisert(sqlist &L.int i.iiit e) int *newbase = NULL;int *p= NULL;int *q= NULL;if( iL.lengtli+l) retiiin ERROR;/ 判断指定位置是否处于线性列表的范围之内,否则退出。if (L.length = L.listsize)若当前线性列表的长度超出容量,则再次分配内存空间newbase = (int *)realloc(L.elem,(L.listsize4-LISTINCREMENT)*sizeof(mt);/ 再次分 配新的固定大小的内存空间。if(? newbase)

9、exit(ERROR);/如果分配内存空间失败,退出函数。L.elem = newbase;当前线性列表的基地址变更为新分配内存空间的基地址。/线性/L.listsize = L.listsize + LISTINCREMENT; 列表容量扩展。/ifq=L.elem+i-l;指定位置的内存地址。fbr(p=L.elem+L.lengtli-1 ;p=q;-p)通过foi循坏语句,将指定位置后的元素整体右移。*(p+l)=*p;*q=e;/将值赋予指定位置的内存空间中。+Length;/线性列表当前长度动态增加。 return OK;函数说明:删除指定位置的元素值iiit listdelete

10、(sqlist &L,int i,mt &e)int *p = NULL;/如呆指定位置超出线性列表的当前长int *q = NULL;if(iL.length) return ERROR;度范围,退出函数。p = L.elemi-1;间地址。e = *p;q = L.elem-L.length-1;foi(+p;p=q;+p)*(p-l 尸*卩;1个位置。L.length-;/得到指定位置元素的内存空/取得该内存空间的值。/将指定位置右边的所有元素左移/线性列表长度减loreturn OK;/else函数说明:通过visit函数将线性列表中所有位置元素增长为自身的平方倍,即n = n*noi

11、iit listtiaveise(sqlist L,void(*visit)(int &p)int i=l;int *p = L.elem; while(i=L. length) visit(*p);值的平方倍。P+;1+;/wlule return OK;函数说明:校验函数iiit compaie(int xl jnt x2)if(xl = x2*x2*x2)return TRUE; 回 TRUEoelsereturn FALSE;函数说明:平方倍处理void visit(iiit &y)y=y*y;/改变线性列表中的元素值为原有/判断Xl是否为x2的三次方,是则返/否则返回FALSEo/平

12、方处理。/ 主函数/void niainQ/主函数:变量声明。sqlist L;mt e,eOjj,k;/初始化线性列表,并显示当前线性列表的属性。i=niitlist(L);pdntf(”初始化后 L: rii L.elem = %u rn L.length = %d in L.listsize = %d rnin,L亡 lem.Llength、L Jistsize);/在线性列表首位置插入值fdr(j=lj=5j+)i=listinsejrt(L,l j);/显示插入值后的线性列表内容。pnntf(在L的表头依次插入15后:rii *L.elem = ”);fbr(j=lJ=5j+)cou

13、t*(L.elem+j -1) :coutendlendl;/显示插入值后的线性列表属性。prmtf(H插入值后 L: i-ii L.elem = %u rn L.length = %d in L.listsize = %dXrXnjL.elemL.lengthL .listsize);/判断当前线性列表是否为空表。i=listempty(L);pimtfCXiVii 判断当前 L 是否空:i = %d(1:是 0:否)rn”,i);/清空当前线性列表,并显示清空后的线性列表属性。pimtf(uii 清空 L.A1T);i=cleailist(L);prmtf(Hiii 清空后 L : rn L.elem = %u rn L.lengtli = %d rn L.listsize = %d XrXnjL.elemL.lengthL .listsize);/根据线性列表的当前长度判断其是

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

当前位置:首页 > 学术论文 > 其它学术论文

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