广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言数据结构之绪论的示例分析
  • 852
分享到

C语言数据结构之绪论的示例分析

2023-06-20 19:06:36 852人浏览 安东尼
摘要

小编给大家分享一下C语言数据结构之绪论的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!绪论什么是数据结构?不同于计算机操作培训,注意与程序设计的区别。Ex

小编给大家分享一下C语言数据结构之绪论的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

绪论

什么是数据结构?

不同于计算机操作培训,注意与程序设计的区别。

Example 1

求n个数的最大值、次最大值。

//1.遍历 - 最朴素的方法int main(){int arr[10] = { 22,334,552,1,4,6,78,23,55,98 };int i = 0;int temp = 0;int max1 = arr[0];int max2 = arr[1];for (i = 1; i < 10; i++){if (arr[i] > max1){temp = max1;max1 = arr[i];arr[i] = temp;}}printf("%d\n", max1);for (i = 2; i < 10; i++){if (arr[i] > max2){temp = max2;max2 = arr[i];arr[i] = temp;}}printf("%d\n", max2); return 0;}
遍历方法共需进行 n − 1 + n − 2 = 2 n − 3 n-1+n-2=2n-3 n−1+n−2=2n−3次比较。

变题

有n个足球队比赛,问至少多少次比赛才能找到冠军和亚军。

解:
实际中通常采用锦标赛方法。(淘汰制)
设有8个数分别为5,7,3,6,8,9,4,2
两两为一组进行比较,大的胜出,小的淘汰。

C语言数据结构之绪论的示例分析

毋庸置疑的是,无论怎么分组,显然最大值永远不会被淘汰。故最大值为9。

共进行了 8 / 2 + 4 / 2 + 2 / 2 = 7 8/2+4/2+2/2=7 8/2+4/2+2/2=7次比较。

故变题寻找冠军的比较次数为 n / 2 + n / 2 2 + … + n / 2 k = n − 1 n/2+n/2^2+…+n/2^k=n-1 n/2+n/22+…+n/2k=n−1

C语言数据结构之绪论的示例分析

次最大值肯定是被最大值给比下去了,不然它就是最大值了。所以顺着这个思路,把所有和最大值进行过直接比较的数字跳出来,重新进行比较。

就是如图所示带*的数字,个数记为k,稍加思索则得出 k = l o g 2 n k=log_2{n} k=log2n

故变题寻找亚军的比较次数为 l o g 2 n − 1 log_2{n}-1 log2n−1

锦标赛方法共需 n − 1 + l o g 2 n − 1 = n + l o g 2 n − 2 n-1+log_2{n}-1=n+log_2{n}-2 n−1+log2n−1=n+log2n−2次比较。

课后思考:将该模型用C程序编写出来。

讨论

处理一般实际工程问题的方法。

  • 找出解决方案。

  • 找出最优解。(最节省资源:CPU和内存)

C语言数据结构之绪论的示例分析

Example 2

判断表达式中括号是否匹配

Z = ( ( a + b ) + c ) ∗ 2 + ( 3 − 5 ) / 7 − ( ( 6 + 2 ) / 8 + a )

void match(char* ch){int count = 0;int i = 0; while (ch[i]!= ';') {if(ch[i] == '(')count++;else if (ch[i] ==')')count--; i++;}if (count != 0)printf("%s\n","no match");else printf("%s\n","match");}

当然,上述代码是由左向右数括号数是否相等来判断括号是否匹配,很容易就可以举出反例 f = ) a + b ( f=)a+b( f=)a+b( ,所有该方法是不成熟的。

Example 3

交叉路口交通管理系统

C语言数据结构之绪论的示例分析

  • 把可以走通的道路设为顶点

  • 如果两个顶点有冲突,用顶点之间的连线表示

变题 着色算法

在状态图中,相邻(有连线)的顶点不能是同一种状态。故对于顶点的不同状态,我们用不同的颜色去表示。由于四色定理,多余5叉的路口不能用少于4种颜色来表示。

在状态图中至少需要多少种颜色来表示?

Example 4

如何快速走出迷宫?

C语言数据结构之绪论的示例分析

以上问题现阶段并不作要求,目的是向大家介绍下数据结构的研究问题。

现在我们是否能回答出刚开始时问大家的问题呢?数据结构是什么?

数据结构是研究的是非数值计算的程序设计方法。

C语言数据结构之绪论的示例分析

以上是“C语言数据结构之绪论的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网其他教程频道!

--结束END--

本文标题: C语言数据结构之绪论的示例分析

本文链接: https://www.lsjlt.com/news/299534.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言数据结构之绪论的示例分析
    小编给大家分享一下C语言数据结构之绪论的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!绪论什么是数据结构?不同于计算机操作培训,注意与程序设计的区别。Ex...
    99+
    2023-06-20
  • 一篇文章带你入门C语言数据结构:绪论
    目录绪论什么是数据结构?Example 1讨论Example 2Example 3Example 4总结绪论 什么是数据结构? 不同于计算机操作培训,注意与程序设计的区别。 Exam...
    99+
    2022-11-12
  • C语言数据结构堆排序示例分析
    今天小编给大家分享一下C语言数据结构堆排序示例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。TOP.堆排序前言什么是堆排...
    99+
    2023-06-30
  • C语言结构体指针的示例分析
    这篇文章给大家分享的是有关C语言结构体指针的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。写结构体指针前,先说一下 . 号和 -> 的区别记得当初刚学C语言的...
    99+
    2023-06-20
  • Go语言结构的示例分析
    这篇文章主要为大家展示了“Go语言结构的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Go语言结构的示例分析”这篇文章吧。当前的调试部分可以使用 go run filename.go 来...
    99+
    2023-06-20
  • C语言结构化程序设计的示例分析
    这篇文章主要为大家展示了“C语言结构化程序设计的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言结构化程序设计的示例分析”这篇文章吧。C语言是结构化的程序设计语言!结构有三大类:顺序...
    99+
    2023-06-20
  • C语言数据结构之算法的时间复杂度实例分析
    这篇文章主要讲解了“C语言数据结构之算法的时间复杂度实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言数据结构之算法的时间复杂度实例分析”吧!1、算法的复杂度算法在编写成可执行程序...
    99+
    2023-06-30
  • C++数据结构中list的示例分析
    小编给大家分享一下C++数据结构中list的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!前言list相较于vector来说会显得复杂,它的好处是在任意位置插入,删除都是一个O(1)的时间复杂度。一、list的节点...
    99+
    2023-06-25
  • java数据结构之树的示例分析
    这篇文章主要介绍java数据结构之树的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!树定义和基本术语定义树(Tree)是n(n≥0)个结点的有限集T,并且当n>0时满足下列条件:(1)有且仅有一个特定的称为根...
    99+
    2023-05-30
    java
  • C语言数据结构之单向链表详解分析
    链表的概念:链表是一种动态存储分布的数据结构,由若干个同一结构类型的结点依次串连而成。 链表分为单向链表和双向链表。 链表变量一般用指针head表示,用来存放链表首结点的地址。 每个...
    99+
    2022-11-12
  • PHP数据结构之图存储结构的示例分析
    这篇文章主要介绍PHP数据结构之图存储结构的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!图的存储结构图的概念介绍得差不多了,大家可以消化消化再继续学习后面的内容。如果没有什么问题的话,我们就继续学习接下来的...
    99+
    2023-06-20
  • C语言中结构体和共用体的示例分析
    这篇文章给大家分享的是有关C语言中结构体和共用体的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、实验目的掌握结构体类型变量的定义和使用;掌握结构体类型数组的概念和应用;掌握链表的概念,初步学会对链表进...
    99+
    2023-06-20
  • C++数据结构红黑树的示例分析
    这篇文章给大家分享的是有关C++数据结构红黑树的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。概念和性质红黑树的概念: 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或...
    99+
    2023-06-29
  • JavaScript数据结构之链表的示例分析
    这篇文章主要为大家展示了“JavaScript数据结构之链表的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript数据结构之链表的示例分析...
    99+
    2022-10-19
  • JS中数据结构之栈的示例分析
    这篇文章给大家分享的是有关JS中数据结构之栈的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。栈是一种高效的数据结构,因为数据只能在栈顶添加或删除,所以这样的操作很快,而且...
    99+
    2022-10-19
  • Java数据结构之链表的示例分析
    小编给大家分享一下Java数据结构之链表的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、链表的介绍什么是链表链表是一种物理存储单元上非连续、非顺序的存...
    99+
    2023-06-15
  • C语言数据结构之堆、堆排序的分析及实现
    目录 1.堆的概念结构及分类1.2堆的分类1.2.1 大堆1.2.2 小堆2. 堆的主要接口3.堆的实现3.1 堆的初始化 HeapInit3.2 堆的销毁 HeapDes...
    99+
    2022-11-13
  • C语言数据结构算法基础之循环队列示例
    目录说明示例代码1. 首先定义结构体:2. 定义各种算法:3. 测试:4. 最后的结果:说明 循环队列是一种先进先出的,首尾相连的队列。 大致的结构如下图: 用数组来抽象的表示一下...
    99+
    2022-11-13
  • C语言数据结构中堆排序的分析总结
    目录一、本章重点 二、堆2.1堆的介绍(三点)2.2向上调整2.3向下调整2.4建堆(两种方式)三、堆排序一、本章重点  堆向上调整向下调整堆排序 二、堆 2.1...
    99+
    2022-11-13
  • C语言中数据存储的示例分析
    这篇文章主要介绍了C语言中数据存储的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。(壹)大端小端藏端倪1.1  什么是大端小端大端(存储)模式,是指数据的低...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作