数据结构之数组与链表

聊数组和链表前,我们首先需要知道内存和如何存放数据的。内存就像大超市寄存处,寄存处有非常多的柜子。每个柜子都有标号(内存地址),柜子用来存放行李(存放数据)。取柜子里的行李时,需要知道柜子标号。 数组 有时候我们的行李有很多,一个柜子存放不下,那么就需要使用多个柜子来存。熟悉Java的都知道,Java里的数组能够存放多个变量值。Java数组类似于一些连续在一起的柜子。 但是数组有一个非常大的缺陷,…

使用C、Java实现二分查找

二分法非常容易理解,它的核心思想是折半查找,直到查到目标元素(也可能找不到)。使用二分法有一个前提条件:元素必须是已经排好序的。 二分法和一般查找的算法时间复杂度对比: 一般查找 O(n) 二分法 O(logn) 二分查找比一般查找快的多,当元素个数n为1024时,一般查找需要执行1024次,而二分法只需要执行10次。当元素个数越多,后者就比前者更快的多。 实现二分法也比较容易,关键有两点: 折半…

使用c语言编写wc命令——统计字符数、单词数、行数

我们知道linux操作系统上有一个非常常用的命令,用来统计字符数、单词数以及行数的wc命令。今天,我们来尝试使用c语言来编写一个类似功能的程序(注:阅读本文需要一定的c语言基础)。 编写该程序时,需要掌握两个函数的用法,getchar()以及putchar()。getchar用来从标准输入中读取一个字符,而putchar则是向标准输出打印一个字符。统计标准输入字符数比较简单,只要getchar函数…