第四周项目(2)-建立链表的算法库
来源:互联网 发布:网络包年维护服务 编辑:程序博客网 时间:2024/06/07 07:23
/* *Copyright(c) 2017,YTU CS *All right reserved. *作 者:王铭泽. *完成日期:2017,9,21 *版 本 号: v1.0 * *问题描述: 算法库包括两个文件: 头文件:linklist.h,包含定义顺序表数据结构的代码、宏定义、要实现算法的函数的声明; 源文件:linklist.cpp,包含实现各种算法的函数的定义 *输 入: 无 *输 出: 两个不同方式建立的链表。 */
本文章是上一篇文章的续,再次文章中添加了六个函数算法分别是:1.判断链表是否为空。2.求链表长度。3.求链表中某个数据的元素值。4.按元素查找。5.插入元素。6.删除元素。
附上代码:
//判断是否为空表bool ListEmpty(LinkList *L){ return (L->next==NULL);}//求链表长度int ListLength(LinkList *L){ int i=0; LinkList *p; p=L; while(!p->next==NULL) { i++; p=p->next; } return i;}//求线性表中某元素的值bool GetElem(LinkList *L,int i,Elemtype &e){ LinkList *r=L; int j=0; //记录数据的个数。 if(i<0) return false;//容错判断 //开始查找第i个元素。 while(j<i && r!=NULL) { j++; r=r->next;//指向的是j的后一个元素。 } if(r==NULL) return false; else { e=r->data; return true; }}//按元素查找位置int LocateElem(LinkList *L,Elemtype e){ LinkList *r=L->next; int j=1; //观察&&不同对结果的影响。测试后感觉没有影响!? //计算顺序是如果&&前的条件成立则不进行下一步的计算。 while(r->next !=NULL && r->data!=e) { r=r->next; j++; } if(r->next==NULL) { return 0; } else { return j; }}//插入元素bool ListInsert(LinkList *&L,int i,Elemtype e){ int j=0; LinkList *r=L,*s; i--; if(i<0) return false; //完成r指向第i-1个元素。 while(j<i && r!=NULL) { j++; r=r->next; } if(r==NULL) return false; else { s=(LinkList *)malloc(sizeof(LinkList)); s->data=e; s->next=r->next; r->next=s; return true; }}//删除元素bool ListDelete(LinkList *&L,int i,Elemtype &e){ LinkList *r=L,*s; int j=0; if(i<0) return false; i--; while( j<i && r!=NULL ) { j++; r=r->next; } if(r==NULL) return false; else { s=r->next; //注意判断当恰好取到最后一个元素的时候。 if(s->next==NULL) return false; e=s->data; r->next=s->next; free(s); return true; }}以上这些函数与之前的函数形成了比较完整的链表算法库,供以后进行链表基本运算使用和借鉴。
阅读全文
0 0
- 第四周项目(2)-建立链表的算法库
- 第四周 项目2 建立算法库
- 第四周项目2建立算法库
- 第四周 项目2 建立“单链表”的算法库
- 第四周项目2-建立单链表的算法库
- 第四周项目(2)-建立 “建立单链表”的算法库
- 第四周项目2-建立链队算法库
- 第四周项目二 单链表算法库的建立
- 第四周项目- “建立单链表”的算法库
- 第四周 项目2-建立“单链表”算法库
- 第四周项目2—建立“单链表”算法库
- 第四周项目2 建立单链表算法库
- 第四周项目2--建立”单链表“算法库
- 第四周实践项目2-建立单链表算法库
- 第四周项目2 建立单链表算法库
- 第四周项目2--建立“单链表”算法库
- 第四周项目2建立“单链表”算法库
- 第四周项目2 建立单链表算法库
- java 用jsoup爬数据
- 通过generator-esri-appbuilder-js自定义Web Appbuilder微件()
- Android源码修改所了解的默认语言及默认时区对应表
- caffe基础-13AlexNet模型bvlc_reference_caffenet的测试
- Theano dimshuffle函数用法
- 第四周项目(2)-建立链表的算法库
- 扫地僧身份解析
- pop的实际应用
- oracle之触发器(trigger)
- VIM 移动
- plink做SNP筛选和GWAS
- JS中的!=、== 、!==、===的用法和区别
- 剑指offer 最小的k个数
- 阿里云文件迁移工具