这个程序是用来记录所有价格相同的图书数量的总和

比如:有5本图书的价格为23,23,34,34,56则会获得价格相同的图书数量的总和为4,记下了两本23元的书和两本34元的书

首先我们是要记录一个链表中的价格相同的图书数量,于是可在表格结点的结构体中加入一个标志属性,用于在计数时的遍历过程中判断当前遍历到的结点在之前是否遍历过(遍历方法类似于顺序排序)。

结点的结构体:

typedef struct book
{string bnum;//书的编号string bname;//书名float bprice;//书的价格bool flag;//用于后面计数是判断是否已经记过
}book;//书籍结构体

主要就是在一个普通的结点结构体中加入了一个bool类型的判断属性

ps:在向链表输入数据时不用忘记将新增加结点的flag初始化为false,表示未被计数

接下来才是主要的函数

统计图书信息表中价格相同的图书数量:

//统计图书信息表中价格相同的图书数量
int Equal_price(LinkList* L)
{//用来遍历的指针p,qint sum = 0;//计总数int count;//记当前与p结点相同价格的结点个数LinkList p = (*L)->next;//链表中此时还没有结点if (!p)return 0;LinkList q = p->next;while (p){//标志为0说明该结点中的价格未被记录过if (p->M_e.flag == false){q = p->next;count = 1;//由于要算上p结点自身所以初始值为1while (q){if (p->M_e.bprice == q->M_e.bprice && q->M_e.flag == false){count++;//定义标志为1表示记录过了q->M_e.flag = true;}q = q->next;}//将与p结点相同价格的结点数计入总数中if (count > 1){sum += count;}}p = p->next;}//该次查找已结束//初始化结点中的标志p = (*L)->next;while (p){p->M_e.flag = false;p = p->next;}return sum;
}

大致思路:

定义一个双重循环,p指针在第一重循环中遍历,用来被比较,q指针在第二重循环中遍历,用来与p指针指向的结点中的价格进行比较,若是p指针的flag为true说明p指针之前已被计数过,就会跳过当前结点到下一个结点

当p指针的flag为false说明p指针之前没有被计数过就能进入循环,而p进入循环后,q便会在p的下一个结点,遍历并判断p之后的结点与p的价格是否相同

当我们发现相同的价格时,在计数时由于要加上p指针指向的结点本身,所以count的初始值为1,注意count是记录当前结点p之后的结点与p相同价格的结点个数,而我们所需要的总个数是记录在sum中的

在遍历完获得我们想要的值了后不用忘记在遍历一次链表将所有结点的flag都改为false,便于下一次计数。

这个算法的遍历次数过多,这是很大的缺点。

统计图书信息表中价格相同的图书数量(链表)相关推荐

  1. 数据结构——基于顺序存储结构的图书信息表的创建和输出

    1.基于顺序存储结构的图书信息表的创建和输出 问题描述 定义一个包含图书信息(书号.书名.价格)的顺序表,读入相应的图书数据来完成图书信息表的创建.然后,统计图书表中的图书个数,同时逐行输出每本图书的 ...

  2. 基于顺序存储结构的图书信息表的创建和输出(C++)

    描述 定义一个包含图书信息(书号.书名.价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后统计图书表中的图书个数,同时逐行输出每本图书的信息. 输入 输入n+1行,其中前n行是n本图书的信 ...

  3. 基于顺序存储结构的图书信息表的创建和输出

    描述 定义一个包含图书信息(书号.书名.价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后统计图书表中的图书个数,同时逐行输出每本图书的信息. 输入 输入n+1行,其中前n行是n本图书的信 ...

  4. 基于顺序存储结构的图书信息表

    利用结构体数组模拟实现线性表 例题一 基于顺序存储结构的图书信息表的创建和输出 题目描述 定义一个包含图书信息(书号.书名.价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后统计图书表中的 ...

  5. 数据结构实验一,第1题:基于顺序存储结构的图书信息表的创建和输出

    描述 定义一个包含图书信息(书号.书名.价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后统计图书表中的图书个数,同时逐行输出每本图书的信息. 输入 输入n+1行,其中前n行是n本图书的信 ...

  6. 基于顺序存储结构的图书信息表的图书去重(C++)

    描述 出版社出版的任何一本图书的书号(ISBN)都是唯一的,即图书表中不允许包含书号重复的图书.定义一个包含图书信息(书号.书名.价格)的顺序表,读入相应的图书数据来完成图书信息表的创建(书号可能重复 ...

  7. 基于顺序存储结构的图书信息表的旧图书的出库(C++)

    描述 ​定义一个包含图书信息(书号.书名.价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后根据指定的待出库的旧图书的位置,将该图书从图书表中删除,最后输出该图书出库后的所有图书的信息. ...

  8. 基于顺序存储结构的图书信息表的新图书的入库(C++)

    描述 定义一个包含图书信息(书号.书名.价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后根据指定的待入库的新图书的位置和信息,将新图书插入到图书表中指定的位置上,最后输出新图书入库后所有 ...

  9. 基于顺序存储结构的图书信息表的逆序存储(C++)

    描述 定义一个包含图书信息(书号.书名.价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后将读入的图书信息逆序存储,逐行输出逆序存储后每本图书的信息. 输入 输入n+1行,第一行是图书数目 ...

最新文章

  1. 连接惠普打印机(通过WIFI)
  2. 【怎样写代码】实现对象的复用 -- 享元模式(四):享元模式与字符串
  3. phpadmin试用
  4. 如何提取cocos iOS应用程序APP与游戏安装包里的资源与文件
  5. BZOJ4893: 项链分赃 BZOJ4895: 项链分赃(增强版)
  6. mysql的索引本质是一颗_一文揭开Mysql索引本质
  7. 使用CSS sprites减少HTTP请求
  8. 疾病相关数据查找,Our world in data使用指南
  9. DEPENDS工具和DUMPBIN工具使用
  10. java运行时异常中文_JAVA——运行时异常(RuntimeException)
  11. NoSQL解决方案比较
  12. SpringMVC——架构,搭建,SSM搭建,POST请求乱码问题,参数转换器
  13. idea module重命名后去掉后面带着的原来的名字
  14. FreeImage的学习总结总结(二)
  15. 服务监管框架下的 IT 运维服务与绩效管理体系建设
  16. (转载)洪磊并不是反叛英雄
  17. linux 命令 root用户把某个文件权限给到普通用户
  18. LAMP服务器环境搭建及工程部署
  19. ParticleSystem中的Culling Mode对耗时有怎样的影响
  20. CouchDB(1):apache CouchDB介绍与安装

热门文章

  1. 刘强东对京东零售动刀:提醒打工仔,要立新功不吃老本
  2. Indonesians Using Smartphones to Connect to the Internet
  3. 小学有关计算机黑板报,小学生科技黑板报图片大全
  4. 纯CSS3制作炫酷的3D相册
  5. HUAWEI MateBook 16惊喜发布 搭载华为应用市场构建更安全的PC应用生态
  6. 文本信息常用的事件抽取模型
  7. 手动部署CEPH rbd
  8. 大学计算机平面设计教学实施报告,设计课程论文,关于高校平面设计课程CoreIDRAW图形设计的教学改革相关参考文献资料-免费论文范文...
  9. 电脑小白学习第九课---看图软件之美图看看
  10. 方舟生存进化mysql_【游戏】《方舟生存进化》怎么联机 搭建服务器联机教程