数据结构4:线性表中的10个扩展函数
来源:互联网 发布:sql万能钥匙 编辑:程序博客网 时间:2024/05/16 07:32
//2014年8月21日10:08:44
//功能:10个顺序存储结构的线性表的常用操作函数
//author:BGY
1.在l中按照非降的顺序插入新的数据元素e,l的长度加上1
void insertascend(sqlist &l,elemtype e) { elemtype *newbase ,*p; int k; if(l.length>=l.listsize)//当前的存储空间已经满了,需要增加分配 { if(!(newbase=(elemtype *)realloc(l.elem,(l.listsize+LISTINCREMENT)*sizeof(elemtype)))) exit(overflow); l.elem=newbase; l.listsize+=LISTINCREMENT; } p=l.elem; for(k=1;k<=l.length;k++) { if(e>*p) p++; else break; } listinsert(l,k,e);}
2.在l中按照非升的顺序插入新的数据元素e,l的长度加上1
void insertdescend(sqlist &l,elemtype e){ elemtype *newbase ,*p; int k; if(l.length>=l.listsize)//当前的存储空间已经满了,需要增加分配 { if(!(newbase=(elemtype *)realloc(l.elem,(l.listsize+LISTINCREMENT)*sizeof(elemtype)))) exit(overflow); l.elem=newbase; l.listsize+=LISTINCREMENT; } p=l.elem; for(k=1;k<=l.length;k++) { if(e<*p)//和第一个函数的差别就在这里上面 p++; else break; } listinsert(l,k,e);}
3.顺序线性表l已经存在,在l的又不插入心得数据元素e,l的长度加上1
status headinsert(sqlist &l,elemtype e){ elemtype *p,*q,*newbase; if(l.length>=l.listsize) { if(!(newbase=(elemtype *)realloc(l.elem,(l.listsize+LISTINCREMENT)*sizeof(elemtype)))) exit(overflow); l.elem=newbase; l.listsize+=LISTINCREMENT; } q=l.elem; for(p=l.elem+l.length-1;p>=q;--p) *(p+1)=*p;//把所有的元素进行后移 *q=e; l.length++; return ok;}
4.在l的尾部插入新的数据元素e,l的长度加上1
status endinsert(sqlist &l,elemtype e){ elemtype *q,*newbase; if(l.length>=l.listsize)//当前的存储空间已经满了,增加分配 { if(!(newbase=(elemtype *)realloc(l.elem,(l.listsize+LISTINCREMENT)*sizeof(elemtype)))) exit(overflow); l.elem=newbase; l.listsize+=LISTINCREMENT; } q=l.elen+l.length; *q=e; l.length++; return ok;}
5.删除l的第一个元素,用e返回该值
status deletefirst(sqlist &l,elemtype &e){ elemtype *p,*q; if(listempty(l))//空表无法返回 return error; p=l.elem;//指向第一个元素 e=*p; q=l.elem+l.length-1;//指向最后一个元素 for(++p;p<=q;++p) { *(p-1)=*p; } l.length--; return ok;}
6.删除最后一个元素
status deletetail(sqlist &l,elemtype &e){ elemtype *p; if(!l.length) return error; p=l.elem+l.length-1; e=*p; l.length--; return ok;}
7.删除表中值为e的元素,并且返回true
status deleteelem(sqlist &l,elemtype e){ int i=0,j; while(i<l.length&&e!=*(l.elem+i)) i++; if(i==l.length) return false; else { for(j=i;j<l.length;j++) { *(l.elem+j)=*(l.elem+j+1); } l.length--; return true; }}
8.用e取代表l中第i个元素
status replaceelem(sqlist l,int i,elemtype e){ if(i<1||i>l.length) exit(error); *(l.elen+i-1)=e; return ok;}
9.按照非降序建立n个元素的线性表
status creatascend(sqlist &l,int n){ int i,j; elemtype e; initlist(l); printf("请输入%d个元素:\n",n); cin>>e; listinsert(l,1,e)//在空表中插入第一个元素 for(i=1;i<n;i++) { cin>>e; for(j=0;j<l.length;j++) if(e<=*(l.elem+j)) break; listinsert(l,j+1,e); //这里为什么是j+1呢?主要是涉及到listinsert的内部操作 //q=l.elem+i-1;//q为插入的位置 } }
10.按照非肾虚建立n个元素的线性表
status creatascend(sqlist &l,int n){ int i,j; elemtype e; initlist(l); printf("请输入%d个元素:\n",n); cin>>e; listinsert(l,1,e)//在空表中插入第一个元素 for(i=1;i<n;i++) { cin>>e; for(j=0;j<l.length;j++) if(e>=*(l.elem+j)) break;//和上一个的差别就在这里 listinsert(l,j+1,e); //这里为什么是j+1呢?主要是涉及到listinsert的内部操作 //q=l.elem+i-1;//q为插入的位置 } }
0 0
- 数据结构4:线性表中的10个扩展函数
- 数据结构中的线性表
- 【线性表二:】大学数据结构实验报告中的两三个关于线性表的小算法
- 2-10-归并扩展的线性单链表-线性表-第2章-《数据结构》课本源码-严蔚敏吴伟民版
- 数据结构线性表的基本函数
- 数据结构 之 线性表中的顺序表
- 数据结构 之 线性表中的链表
- 数据结构之删除线性表中的元素
- 数据结构 线性结构中的链表
- 数据结构——线性表中的算法
- 数据结构中的线性表代码实现
- 函数、排序、线性数据结构
- 数据结构——关于数据结构中的线性表
- 线性表的相关操作 数据结构实验报告第二个
- 《数据结构》实验二: 线性表实验 第一个
- 数据结构 线性结构中的数组
- 线性表10个问答
- c语言数据结构线性表之顺序表功能函数
- myeclipse debug
- 两分钟彻底让你明白Android Activity生命周期
- Android签名与认证详细分析之一(CERT.RSA剖析)
- 如何使用Universal Image Loader加载本地图片
- 所发生的发大水发松岛枫
- 数据结构4:线性表中的10个扩展函数
- hdu 4949 Light 插头dp
- Linux如何及时响应外部中断
- freopen()函数文件流重定向和文件流的清除
- Android签名与认证详细分析之二(CERT.RSA剖析)
- CSDN采访陶辉的关于开发Nginx模块的建议
- MFC中三种DLL区别
- mongodb-river-elasticsearch源码解析
- Python print 不换行打印