1、大秦帝国的连坐

孙皓晖先生在《大秦帝国(第一部)》中讲到:

烈酒下喉,卫鞅精神为之一振,“《治秦九论》乃卫鞅谋划的变法大纲。其一《田论》,立定废井田、开阡陌、田得买卖之法令……其五《郡县论》,将秦国旧世族的自治封地一律取缔,设郡县两级官府,直辖于国府之下,使全国治权一统,如臂使指。其六《连坐论》,县下设里、村、甲三级小吏。民以十户为一甲,一人犯罪,十户连坐,使民众怯于私斗犯罪而勇于公战立功。”

连坐制就是一条隐形的绳子,把“乡里乡亲”们串联起来。

(连坐制确实在特定的历史条件下发挥了巨大的作用,之后一系列的制度安排又将大秦帝国拖入了深渊。)

连坐制本身就像一个链表(Linked list ),一个个的人串联起来,形成一种独特的结构。

2、链表的由来和表示

存储数据的时候我们通常用的是数组,数组最大的特点就是可以通过下标快速查找,也就是便于检索。

但对于线性表(数组和链表都属于线性表)常见的插入操作,数组就有些力不从心了。

为了在数组中插入一个数据,需要移动后面所有的数据!

链表正是为了快速插入的问题。

链表每一个节点都由数据域指向下一个节点的指针构成;
多个节点首尾相连,构成线性表。

上一节《第二节、算法中的公平——队列》我们讲到了结构体,忘记结构体的定义的同学可以出门左转,查看上一节。

这里,我们就使用结构体表示链表,struct list_node就是链表的一个节点,包含一个数据域和一个指向下一个节点的指针。

typedef struct list_node  {  int data ; //数据域,用于存储数据  struct list_node *next ; //指向下一个节点的指针
}single_list;  

这里的struct list_node的用法与上一节的不同,使用typedef,大括号后面也有single_list。

这样以后在定义struct list_node变量的时候就不用写一大长串了,直接single_list就可以了。

//下面两种方式等价
struct list_node node;
single_list node;

3、链表的基本用法

与此同时,为了实现便于插入数据的要求,链表的长度必须是可变的,否则可能没有空间插入!

所以,链表的初始化以及插入操作需要申请存储空间,函数为malloc()函数,用来分配存储空间。对应的有释放存储空间,使用free()函数。

由于项目运行结束后会自动回收存储空间,所以对于小项目而言,可以不手动回收,有兴趣可以搜索free()函数的用法。

下面的代码生成了一个最开始的一个节点,数据data存储的是5,因为接下来没有数据,所以next指针指向空NULL。

#include <stdlib.h>  //malloc函数需要使用这个头文件
single_list *node = NULL;          //1、定义头指针
node = (single_list *)malloc(sizeof(single_list)); //2、分配内存空间
node->data = 5;                   //3、给链表节点的数据赋值
node->next = NULL;                 //4、将链表的指针域指向空  

我们可以printf打印数据,查看结果。

完整代码:

/*
输出:5
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct list_node
{int data;struct list_node *next;
}single_list;
int main()
{single_list *node = NULL;          //1、定义一个头指针  node = (single_list *)malloc(sizeof(single_list)); //2、分配内存空间  node->data = 5;                   //3、给链表节点的数据赋值  node->next = NULL;                 //4、将链表的指针域指向空  printf("%d\n", node->data);getchar();getchar();return 0;
}

这里我们使用了->这个运算符,叫做结构体指针运算符,用来表示结构体内部的指针指向空间存储的数据,比较拗口,看个例子就知道了。

//两者等价,省了个括号!程序员都是偷懒的!
node->data = 5;
(*node).data=5;

4、小结

这一小节介绍的新知识比较多,吃多了难以消化,所以就不介绍更多了。简单回顾下:

  • 链表,就是节点连在一起
  • 每一个节点包含一个数据域指向下一个节点的指针
  • 链表最大的好处是插入数据快
  • 为了实现插入数据快的功能,链表长度可变,要手动分配空间

链表的插入、删除、遍历操作,我们下一节再见!

转载于:https://blog.51cto.com/10163636/2120086

第三节、大秦帝国的连坐与链表(一)相关推荐

  1. 【NLP】Python NLTK 走进大秦帝国

    Python NLTK 走进大秦帝国 作者:白宁超 2016年10月17日18:54:10 摘要:NLTK是由宾夕法尼亚大学计算机和信息科学使用python语言实现的一种自然语言工具包,其收集的大量公 ...

  2. 好看的一本历史小说《大秦帝国》啊

    2019独角兽企业重金招聘Python工程师标准>>> 最近看<大秦帝国>这本历史小说,真是太好看了.佩服作者的写作功力.想说赞美之词 都觉得词穷了啊.总之,就是,赞,赞 ...

  3. 论霸道,看大秦帝国有感

    下午很疲惫,原因是昨晚一夜被打扰没有睡好 本想着中午休息休息恢复一下,结果被叫过来 那就只能应付考勤了 讽刺不,管理是为了效率,可做着做着就是为了管理本身 如果中午不在路上,至少我会休息一下,应该会比 ...

  4. 历史-大秦帝国1-4

    09年上半年读了一些书,但最有感觉的就是这部<大秦帝国>,特别是第一部,对秦孝公.卫(商)鞅的描述细致入微,情节的展开也是丝丝相扣,加上白雪等儿女情长,留下了太深的印象,以至于后面看第二. ...

  5. 从《大秦帝国》而论人才

    这段时间<大秦帝国>一剧正在热播,让我们仿佛又回到了战国时代. 我只看了一段,便为该剧深深吸引.秦孝公这个人真的很伟大,不知道剧情和历史的差异性到底有多大,但是从剧中却看出此君非常有胆识. ...

  6. 《大秦赋》最近很火!于是我用Python抓取了“相关数据”,发现了这些秘密.........

    ↑↑↑关注后"星标"简说Python 人人都可以简单入门Python.爬虫.数据分析 简说Python分享来源:数据分析与统计学之美 作者:黄伟呢One old watch, li ...

  7. 通过Python分析《大秦赋》,我知道了这些

    前言 对于<大秦赋>,相信大家都不会陌生,由延艺导演,张鲁一主演的历史古装剧. 剧集讲述了秦始皇嬴政在吕不韦.李斯.王翦等的辅佐下平灭六国.一统天下,建立起中华历史上第一个大一统的中央集权 ...

  8. 最近最火的《大秦赋》,用Python抓取相关数据,发现了秘密

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于数据分析与统计学之美 ,作者黄伟呢 Python 数据分析入门案例讲解 https: ...

  9. 《大秦赋》从8.9降到5.8!爬取数据后,发现这些秘密......

    最近,最火的电视剧莫过于<大秦赋了>,自月初开播后,收获了不错的口碑.然而随着电视剧的跟新,该剧在网上引起了激烈的讨论,不仅口碑急剧下滑,颇有高开低走的趋势,同时该剧的评分也由最初的8.9 ...

最新文章

  1. 如何处理大数据:微博信息流数据库设计
  2. python【蓝桥杯vip练习题库】ADV-97十进制数转八进制数
  3. 两张图概括struts2执行流程核心(经典)
  4. 优雅的让Fragment监听返回键
  5. python to_excel新增sheet_Python使用xlrd和xlwt读写Excel的简单用法
  6. java中 下列不合法的语句_在Java中,下列( )是不合法的赋值语句。_学小易找答案...
  7. c语言程序源代码_程序的编译、链接和执行
  8. EXTJS4.0 EXT文件目录,本地加载文档,命名规范
  9. 用户故事与敏捷方法—发布计划
  10. leetcode 刷题录
  11. js中this指向学习总结
  12. UVA10066(DP)
  13. 2022年10月最新CPU天梯图 CPU天梯图高清完整版
  14. 为了摸鱼,我开发了一个工具网站
  15. 漏洞篇(SQL注入一)
  16. 苹果CMSV10仿芒果TV影视PC+WAP模板
  17. 专访STEM领域人才资深人工智能图像算法工程师张旦
  18. fect:基于面板数据的因果推断(下)
  19. 删了 GPL 协议转闭源?法院判决:GPL 协议终身有效
  20. 学习JAVA.day05

热门文章

  1. 明细报表汇总使用说明
  2. android so调用java,AndServer+Service打造Android服务器实现so文件调用
  3. idea 2019注册码(亲测可用)
  4. 生成数据库设计文档小技巧
  5. BK7256,上海博通-FreeRtos平台,智能家居中控屏,旋钮屏等方案介绍
  6. 如何下载FusionMap中国各省地图的SWF文件
  7. ​区块链技术的重要性
  8. CIFAR10代码解释
  9. Acrel-2000型电力监控系统可实现配电所配电回路用电的实时监控和管理
  10. webgoat靶场复现