返回介绍

在链表中插入值

发布于 2024-10-10 23:21:29 字数 2589 浏览 0 评论 0 收藏 0

通过修改指针的值,就可以插入

island ,就像之前做的那样:

短短两行代码,就在链表插入了新值。但如果用数组,为了移动数组元素,你要多写很多代码。

好了,你已经学会了链表的创建与使用,现在就来练练吧……

代码冰箱贴

不好啦,有人弄乱了冰箱门上的 display() 函数,你能重组代码吗?

代码冰箱贴解答

不好啦,有人弄乱了冰箱门上的 display() 函数,你重组代码了吗?

这里没有蠢问题问:其他语言,比如 Java,有内置链表,C 语言有内置数据结构吗?答:C 语言没有内置数据结构,你必须自己创建它们。问:要是我有一个很长的链表,如果我想使用第 700 个元素,就必须从第一个开始一路读下去吗?答:是的,你必须这样做。问:这样可不好,本来我以为链表比数组好。答:数据结构没有好与坏之分,只有适合或不适合于它的应用场合之分。问:也就是说如果我想快速地插入数据,就需要链表,但如果我想直接访问元素,就应该用数组。是这样吗?答:完全正确。问:你给出的这个结构含有一个指向其他结构的指针。我能把指针换成一个递归定义的结构吗?答:不行。问:为什么?答:C 语言需要知道结构在存储器中占的具体大小,如果在结构中递归地复制它自己,那么两条数据就会不一样大。

试驾

我们对 island 链表使用 display() 函数,并把代码编译成一个叫 tour 的程序。

妙极了,代码创建了 island 链表,还能方便地插入元素。

好了,现在你已经掌握了使用递归结构和链表的基本方法,现在来看主程序。你需要从下面这个文件中读取飞行之旅的数据:

机场的工作人员还在创建文件,在程序停止之前,你都不知道文件有多大。文件中每一行都是一个岛名,把文件转换为链表应该不难,你说呢?

C 标准礼貌指南

本页上的代码在中间的位置声明了新变量 skull ,只有 C99 和 C11 标准才允许这样做,在 ANSI C 中,必须在函数的顶部声明局部变量。

没错,需要以某种方法创建动态存储。

到目前为止你写过的所有程序都使用了静态存储。每当你想保存一样东西,都在代码中添加了一个变量。这些变量通常保存在栈中,别忘了,栈是存储器中专门用来保存局部变量的区域。

当你创建前四座岛时,写了:island amity = {"Amity", "09:00", "17:00", NULL};island craggy = {"Craggy", "09:00", "17:00", NULL};island isla_nublar = {"Isla Nublar", "09:00", "17:00", NULL};island shutter = {"Shutter", "09:00", "17:00", NULL};



每个 island 结构都需要自己的变量。上面这段代码始终只会创建这四座岛。如果想要让代码保存更多的 island ,需要使用更多的局部变量。如果在编译时知道需要保存多少数据,那没问题,但程序在运行前往往不知道自己需要多少存储空间。打个比方,假如你在编写网页浏览器,那么在读取网页之前就不知道保存网页需要多少存储空间。因此 C 程序需要以某种方式让操作系统在它们需要的时候分配存储空间。

程序需要动态存储。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文