数据结构实验六 综合数据处理

广州大学学生实验报告

 

开课实验室:计算机科学与工程实验(电子楼416A)     2019年6月14日

学院

计算机科学与教育软件学院

年级、专业、班

计算机大类

144班

姓名

 

学号

 

实验课程名称

数据结构实验

成绩

 

实验项目名称

实验六 数据处理综合实验

指导老师

 

一、实验目的

掌握线性的定义及基本操作,用链表实现:遍历、查找、插入、删除、翻转。

二、使用仪器、器材

微机一台

操作系统:WinXP

编程软件:C++

三、实验内容及原理

实验内容:

  1. 设计问卷调查表内容:

必填:身份(自己设计分类,例如:学生/体力劳动者/脑力劳动者)

年龄

性别

选填:自行设计单项选择题、填空题

例如:可接受的价格范围(自己设计,可以上限/下限,或某个值+上下浮动)

屏幕大小/整机大小

重量

颜色(也可以选择忽略,即不介意)

待机时间

拍照质量

音响效果

对以上各项指标重要程度的排序

……

  1. 有50人填写了问卷,某些问题必答、某些问题允许不答
  2. 自行设计数据输入方法(例如读.txt或.xls文件)

数据处理功能:自行基于问题的数据处理,例如

  1. 不同群体最喜欢的手机品牌
  2. 不同年龄段最喜欢的手机品牌
  3. 学生群体中接受各个价格区间的比例
  4. 最受欢迎的手机屏幕尺寸
  5. 男性和女性各自最喜欢的手机颜色
  6. 接受2000-2999价格区间的上班族最希望的手机拍照效果
  7. 最受退休人员欢迎的手机续航

 

  • 实验过程原始数据记录

 

// ConsoleApplication76.cpp : 定义控制台应用程序的入口点。

//

 

#include "stdafx.h"

 

#include <iostream>

#include <fstream>

#include"manage.h"

using namespace std;

 

int main()

{

    LinkNode *person;

    Createlink(person);

    ageR(person);

    identityR(person);

    brandR(person);

    sex_graph(person);

}

 

 

#pragma once

// 单链表基本运算算法

#include <stdio.h>

#include <malloc.h>

typedef int ElemType;

#define MAXL 100      //最大长度

typedef int KeyType//定义关键字类型为int

typedef char InfoType;

typedef struct LNode

{

    int identity; //身份  0表示学生 1表示上班族  2表示退休人员 3表示其他

    int age;  //年龄段 0表示20岁以下 1表示21-50岁 2表示51岁以上

    int sex; //性别   0表示男  1表示女

 

    int brand; //手机的品牌  0表示OPPO 1表示vivo 2表示华为 3表示荣耀 4表示苹果 5表示小米

    int price; //手机的价格区间 0表示1000以下 1表示1000-1999 2表示2000-2999 3表示3000以上

    int size; // 手机屏幕的尺寸 0表示4.5英寸 1表示5.5英寸 2表示6英寸以上

    int color; //手机的颜色 0表示黑 1表示白 2表示蓝 3表示其他

    int graph; //0表示不介意 1表示基本清晰就可以 2表示拍照效果要好

    int battery; //0表示续航久 1表示无所谓

 

    struct LNode *next;       //指向后继结点

} LinkNode;                    //声明单链表结点类型

 

typedef struct

{

    KeyType key;      //关键字项

    char* data;       //其他数据项,类型为InfoType

} RecType;                //查找元素的类型

 

 

void CreateListF(LinkNode *&L, ElemType id[], ElemType a[], ElemType sa[], ElemType b[], ElemType p[], ElemType si[], ElemType c[],

    ElemType g[], ElemType ba[], int n);

 

//尾插法建立单链表

 

void InitList(LinkNode *&L);

 

void DestroyList(LinkNode *&L);

 

 

void DispList(LinkNode *L);

 

bool GetElem(LinkNode *L, int i, ElemType &e);

 

 

void Createlink(LinkNode *&L);

 

void BubbleSort(RecType R[], int n);//冒泡排序

 

void CreateList(RecType R[], KeyType keys[], int n); //创建顺序表

void CreateListage(RecType R[], KeyType keys[], int n);  //创建顺序表

void Createbrand(RecType R[], KeyType keys[], int n); //创建顺序表

void Creategraph(RecType R[], KeyType keys[], int n); //创建顺序表

void Createidentity(RecType R[], KeyType keys[], int n); //创建顺序表

void DispList(RecType R[], int n); //输出顺序表

 

void ageR(LinkNode *L);

void identityR(LinkNode *L);

void brandR(LinkNode *L);

void sex_graph(LinkNode * L);

 

 

 

// 单链表基本运算算法

#include "stdafx.h"

#include"manage.h"

#include"iostream"

using namespace std;

void CreateListF(LinkNode *&LElemType id[], ElemType a[], ElemType sa[], ElemType b[], ElemType p[], ElemType si[], ElemType c[],

    ElemType g[], ElemType ba[], int n)

//头插法建立单链表

{

    LinkNode *s;

    L = (LinkNode *)malloc(sizeof(LinkNode));  //创建头结点

    L->next = NULL;

    for (int i = 0; i<n; i++)

    {

         s = (LinkNode *)malloc(sizeof(LinkNode));//创建新结点s

         s->identity = id[i];

         s->age = a[i];

         s->sex = sa[i];

         s->brand = b[i];

         s->price = p[i];

         s->size = si[i];

         s->color = c[i];

         s->graph = g[i];

         s->battery = ba[i];

         s->next = L->next;             //将结点s插在原开始结点之前,头结点之后

         L->next = s;

    }

}

 

void InitList(LinkNode *&L)

{

    L = (LinkNode *)malloc(sizeof(LinkNode));  //创建头结点

    L->next = NULL;

}

void DestroyList(LinkNode *&L)

{

    LinkNode *pre = L, *p = pre->next;

    while (p != NULL)

    {

         free(pre);

         pre = p;

         p = pre->next;

    }

    free(pre);   //此时p为NULL,pre指向尾结点,释放它

}

void DispList(LinkNode *L)

{

    LinkNode *p = L->next;

    while (p != NULL)

    {

         printf("%d ", p->identity);

         p = p->next;

    }

    printf("\n");

}

void ageR(LinkNode *L)

{

    int age[3];

    age[0] = 0;

    age[1] = 0;

    age[2] = 0;

    LinkNode *p = L->next;

    while (p != NULL)

    {

         if (p->age == 0)age[0]++;

         else if (p->age == 1)age[1]++;

         else if (p->age == 2)age[2]++;

         p = p->next;

    }

    printf("年龄在20岁以下的有%d人\n", age[0]);

    printf("年龄在21-50岁的有%d人\n", age[1]);

    printf("年龄在51岁以下的有%d人\n", age[2]);

    RecType R[3];

    CreateListage(R, age,3);  //创建顺序表

    BubbleSort(R, 3);

    printf("最多人处在年龄阶段为:%s \n", R[0].data);

}

bool GetElem(LinkNode *L, int i, ElemType &e)

{

    int j = 0;

    LinkNode *p = L;

    if (i <= 0) return false;      //i错误返回假

    while (j<i && p != NULL)

    {

         j++;

         p = p->next;

    }

    if (p == NULL)                 //不存在第i个数据结点

         return false;

    else                      //存在第i个数据结点

    {

         //e = p->data;

         return true;

    }

}

 

void Createlink(LinkNode *& L)

{

    FILE *stream1;

    freopen_s(&stream1,"C:\\test.txt", "r", stdin);  //从文件中读取随机生成的调查对象

    int num = 0;

    L = new LinkNode;

    L->next = NULL;

    LinkNode* p = new LinkNode;

    while (cin >> p->identity) {

         num++;   //统计本次调查对象的人数

         cin >> p->age >> p->sex >> p->brand

             >> p->price >> p->size >> p->color

             >> p->graph >> p->battery;

         p->next = L->next;

         L->next = p;

         p = new LinkNode;

    }

    delete p;

 

    cout << "本次参与调查对象的人数有:" << num << "\n\n";

}

//冒泡排序算法

 

void BubbleSort(RecType R[], int n)

{

    int i, j, k;

    RecType tmp;

    for (i = 0; i < n - 1; i++)

    {

         for (j = n - 1; j > i; j--)    //比较,找出本趟最小关键字的记录

             if (R[j].key < R[j - 1].key)

             {

                  tmp = R[j];  //R[j]与R[j-1]进行交换,将最小关键字记录前移

                  R[j] = R[j - 1];

                  R[j - 1] = tmp;

             }

    }

}

void CreateList(RecType R[], KeyType keys[], int n)

{

    for (int i = 0; i < n; i++)             //R[0..n-1]存放排序记录

         R[i].key = keys[i];

}

void CreateListage(RecType R[], KeyType keys[], int n)   //创建顺序表

{

    for (int i = 0; i < n; i++)             //R[0..n-1]存放排序记录

    {

         R[i].key = keys[i];

    }

    R[0].data = "20岁以下";

    R[1].data = "20岁-51岁";

    R[2].data = "51岁以上";

}

void Createbrand(RecType R[], KeyType keys[], int n)

{

    for (int i = 0; i < n; i++)             //R[0..n-1]存放排序记录

    {

         R[i].key = keys[i];

    }

    R[0].data = "OPPO";

    R[1].data = "vivo";

    R[2].data = "华为";

    R[3].data = "荣耀";

    R[4].data = "苹果";

    R[5].data = "小米";

 

}

void Creategraph(RecType R[], KeyType keys[], int n)

{

    for (int i = 0; i < n; i++)             //R[0..n-1]存放排序记录

    {

         R[i].key = keys[i];

    }

    R[0].data = "表示不介意";

    R[1].data = "表示基本清晰就可以";

    R[2].data = "表示拍照效果要好";

}

void Createidentity(RecType R[], KeyType keys[], int n//创建顺序表

{

    for (int i = 0; i < n; i++)             //R[0..n-1]存放排序记录

    {

         R[i].key = keys[i];

    }

    R[0].data = "学生";

    R[1].data = "上班族";

    R[2].data = "其他";

}

void DispList(RecType R[], int n//输出顺序表

{

    for (int i = 0; i < n; i++)

         printf("%d ", R[i].key);

    printf("\n");

}

 

void identityR(LinkNode *L)

{

    int identity[3];

    identity[0] = 0;

    identity[1] = 0;

    identity[2] = 0;

    LinkNode *p = L->next;

    while (p != NULL)

    {

         if (p->identity == 0)identity[0]++;

        else if (p->identity == 1)identity[1]++;

         else if (p->identity == 2)identity[2]++;

         p = p->next;

    }

    printf("身份是学生的有%d人\n", identity[0]);

    printf("身份是上班族的有%d人\n", identity[1]);

    printf("身份为其他的有%d人\n", identity[2]);

    RecType R[3];

    Createidentity(R, identity, 3);    //创建顺序表

    BubbleSort(R, 3);

    printf("填选问卷身份最多的是:%s \n", R[0].data);

}

 

void brandR(LinkNode * L)

{

    int brand[6];

    brand[0] = 0;

    brand[1] = 0;

    brand[2] = 0;

    brand[3] = 0;

    brand[4] = 0;

    brand[5] = 0;

    LinkNode *p = L->next;

    while (p != NULL)

    {

         if (p->brand == 0)brand[0]++;

         else if (p->brand == 1)brand[1]++;

         else if (p->brand == 2)brand[2]++;

         else if (p->brand == 3)brand[3]++;

         else if (p->brand == 4)brand[4]++;

         else if (p->brand == 5)brand[5]++;

         p = p->next;

    }

    printf("喜欢OPPO的有%d人\n", brand[0]);

    printf("喜欢vivo的有%d人\n", brand[1]);

    printf("喜欢华为的有%d人\n", brand[2]);

    printf("喜欢荣耀的有%d人\n", brand[3]);

    printf("喜欢苹果的有%d人\n", brand[4]);

    printf("喜欢小米的有%d人\n", brand[5]);

    RecType R[6];

    Createbrand(R, brand, 6);  //创建顺序表

    BubbleSort(R, 6);

    printf("最受欢迎的品牌是:%s \n", R[5].data);

}

 

void sex_graph(LinkNode * L)//0表示不介意 1表示基本清晰就可以 2表示拍照效果要好

{

    int graphman[3];

    int graphfemale[3];

    graphman[0] = 0;

    graphman[1] = 0;

    graphman[2] = 0;

    graphfemale[0] = 0;

    graphfemale[1] = 0;

    graphfemale[2] = 0;

    LinkNode *p = L->next;

    while (p != NULL)

    {

         if (p->sex == 0&&p->graph==0)

             graphman[0]++;

         else if (p->sex == 0 && p->graph == 1)graphman[1]++;

         else if (p->sex == 0 && p->graph == 2)graphman[2]++;

         else if (p->sex == 1 && p->graph == 0)graphfemale[0]++;

         else if (p->sex == 1 && p->graph == 1)graphfemale[1]++;

         else if (p->sex == 1 && p->graph == 2)graphfemale[2]++;

        

         p = p->next;

    }

 

    RecType R1[3];

    RecType R2[3];

    Creategraph(R1, graphman, 3);  //创建顺序表

    Creategraph(R2, graphfemale, 3);   //创建顺序表

    BubbleSort(R1, 3);

    BubbleSort(R1, 3);

    printf("男性对手机相机的态度更注重于:%s \n", R2[0].data);

    printf("女性对手机相机的态度更注重于:%s \n", R1[0].data);

}

 

 

五、实验结果及分析

 

问卷链接:https://www.wjx.cn/jq/40339278.aspx

问卷截图

   

实验中使用链表存储结构,使用了冒泡排序。对数据处理有些采用了关联数据处理,例如把性别和对相机注重数据联合在一起分析。由于电脑损坏,重新写了一次,因此对某些数据做了简单分析。

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/418870.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS中的text-shadow。

text-shadow&#xff08;文字投影&#xff09;&#xff0c;box-shadow&#xff08;容器投影&#xff09;&#xff0c;border-radius&#xff08;圆角&#xff09;这三个属性估计以后用的比较多&#xff0c;记录 一下。目前不支持IE系列&#xff08;不过可以使用其他方法实现&am…

前端学习(1803):前端调试之事件伪类练习二

index.html <!DOCTYPE html> <html lang"en"><head><!--系统内置 start--><script type"text/javascript"></script><!--系统内置 end--><meta charset"UTF-8"><title>练习</title&g…

数据结构课程设计 神秘国度的爱情故事

数据结构 课程设计报告 广州大学 计算机科学与网络工程学院 计算机系 17级计科专业2班 2019年6月30日 广州大学学生实验报告 开课学院及实验室&#xff1a;计算机科学与工程实验室 2019年07月01日 学院 计算机科学与网络工程学院 年级/专业/班 计科1…

前端学习(1805):前端调试之列表伪类练习

index.html <!DOCTYPE html> <html lang"en"><head><!--系统内置 start--><script type"text/javascript"></script><!--系统内置 end--><meta charset"UTF-8"><title>练习</title&g…

Android中的一些基础知识(二)

这几天在回顾Android的基础知识&#xff0c;就把一些常见的知识点整理一下&#xff0c;以后忘了也可以翻出来看一看。 简单介绍一下Activity的生命周期 在API文档中对生命周期回调的函数描述的很详细&#xff0c;这里我只是翻译了一下。 onCreate&#xff1a;当Activity第一次…

关于Open browser failed!! Please check if you have installed the browser chrome correctly!错误的一种解决方法

新建一个文件夹&#xff0c;再在新建的文件夹里写html文件&#xff0c;再用快捷键&#xff1a;altb打开即可。

前端学习(1806):前端调试之列表伪类练习二

index.html <!DOCTYPE html> <html lang"en"><head><!--系统内置 start--><script type"text/javascript"></script><!--系统内置 end--><meta charset"UTF-8"><title>练习</title&g…

虚拟机安装

带你解密Linux的【Vm】-CSDN博客https://blog.csdn.net/lz17267861157/article/details/134031133

推荐开发工具系列之--LinrF5(自动刷新)

最近有点事&#xff1b;略忙&#xff1b;以至于上篇文章说好的明天一直到了今天才到&#xff1b; //*******************************分割是会呼吸的痛****************************** 作为一个程序员&#xff1b;尤其是作为一个网站开发程序员&#xff1b;如果再更尤其点作为一…

前端学习(1807):前端调试之列表伪类练习三

index.html <!DOCTYPE html> <html lang"en"><head><!--系统内置 start--><script type"text/javascript"></script><!--系统内置 end--><meta charset"UTF-8"><title>练习</title&g…

关于win32与win64的兼容性问题

源代码&#xff1a; &#xff08;操作系统作业&#xff09;printf("\nMemory attached at %X\n",(int)shm); shm是个char*地址&#xff1b; gcc编译出现警告&#xff1a;lcylcy-Lenovo-R720-15IKBN:~ $ gcc -o shmread shmread.c shmread.c: In function ‘main’:…

前端学习(1812):前端调试之shadow练习

index.html <!DOCTYPE html> <html lang"en"><head><!--系统内置 start--><script type"text/javascript"></script><!--系统内置 end--><meta charset"UTF-8"><title>练习</title&g…

bullet HashMap 内存紧密的哈希表

last modified time&#xff1a;2014-11-9 14:07:00 bullet 是一款开源物理引擎&#xff0c;它提供了碰撞检測、重力模拟等功能&#xff0c;非常多3D游戏、3D设计软件&#xff08;如3D Mark&#xff09;使用它作为物理引擎。作为物理引擎&#xff0c;对性能的要求是非常苛刻的&…

前端学习(1813):前端调试之微博个人banner开发

index.html <!DOCTYPE html> <html lang"en"><head> <!--系统内置 start--> <script type"text/javascript"></script> <!--系统内置 end--><meta charset"UTF-8"><title>微博实战--ban…

操作系统课设——设计模拟一个SPOOLING假脱机输出程序

广州大学操作系统课程设计报告 要求&#xff1a;书写课程设计报告&#xff0c;报告中应该包含如下内容&#xff1a; 一&#xff0e;课程设计题目及内容 课程设计题目&#xff1a;题目三&#xff1a; 设计模拟一个SPOOLING假脱机输出程序 &#xff08;1&#xff09; 系统设计要…

操作系统实验——进程管理与进程通信

广州大学学生实验报告 实验一 进程管理与进程通信 一、实验目的 1、掌握进程的概念&#xff0c;明确进程的含义。 2、认识并了解进程并发执行的实质&#xff0c;进程的阻塞与唤醒&#xff0c;终止与退出的过程。 3、熟悉进程的睡眠、同步、撤消等进程控制方法。 4、分析进程…