| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 1211 人关注过本帖, 1 人收藏
标题:关于二级指针的疑问
只看楼主 加入收藏
令狐少侠56
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:320
专家分:175
注 册:2014-4-10
  得分:0 
以下是引用TonyDeng在2015-11-9 22:32:16的发言:

我這兩天都在外面,後天回去詳細跟你說。

谢谢版主。。。
2015-11-09 22:36
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25861
专家分:48889
注 册:2011-6-22
  得分:0 
不管是插入還是刪除數據,都應該返回正確的頭結點,因爲被動作的可能正是頭結點,在頭前加結點(頭插)和刪掉頭結點,都是有可能的,此時頭結點變化了,所以需要返回新的正確的頭。

授人以渔,不授人以鱼。
2015-11-10 19:46
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25861
专家分:48889
注 册:2011-6-22
  得分:0 
指針本身是一個數據實體,是普通的變量,占用内存,它的特殊處是這個變量的値被視爲另一個變量的地址(這是一種約定,視爲地址是指針,視爲値是數據,故C允許把數值賦給指針)。在傳參時,若要通過參數修改變量的值,我們會用指針參數,那麼,若要通過參數修改本身是指針的變量的值,也是把這個指針的地址作參數!

授人以渔,不授人以鱼。
2015-11-10 19:57
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25861
专家分:48889
注 册:2011-6-22
  得分:0 
由於鏈表的結點通常以指針表示,所以當鏈表的結點要改變爲另外的一個對象時,實質就是把指針的值(對象的地址)改了,但指針仍然是這個指針,這就是把指針的地址作爲參數傳遞的用意,因爲我們要修改指針的值。

不要理會什麼二級三級指針的名詞,你衹要明白現在要拿指針怎麽用、想達到什麼目的、應該怎麼做,就可以了。

授人以渔,不授人以鱼。
2015-11-10 20:03
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2009
专家分:8990
注 册:2015-3-19
  得分:10 
大家看,这个版主又发繁体字!

知命以下无敌
2015-11-10 20:06
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25861
专家分:48889
注 册:2011-6-22
  得分:0 
以下是引用林月儿在2015-11-10 20:06:10的发言:

大家看,这个版主又发繁体字!

小林子有什麽意見?

授人以渔,不授人以鱼。
2015-11-10 20:58
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2009
专家分:8990
注 册:2015-3-19
  得分:0 

知命以下无敌
2015-11-10 21:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25861
专家分:48889
注 册:2011-6-22
  得分:0 
回复 9楼 令狐少侠56
插入的原理,你好像沒看我前面給你鏈接的圖釋。

授人以渔,不授人以鱼。
2015-11-11 11:28
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25861
专家分:48889
注 册:2011-6-22
  得分:0 


在2、3之間插入node[address]:
1.首先創建實體node[address],即結點在malloc()得到的address處
2.令結點2的next指向新實體node,即[2]->next = address
3.令新結點的next指向結點3,即node->next = 3[address]

你的圖怪怪的,空間1就是頭結點(head),在前面寫個head幹嘛。

[此贴子已经被作者于2015-11-11 11:51编辑过]


授人以渔,不授人以鱼。
2015-11-11 11:42
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25861
专家分:48889
注 册:2011-6-22
  得分:0 
刪除動作,設刪除結點3:
1.另結點2的next指向結點4即可,即[2]->next = [4]
2.是否需要free()掉結點3,視實際需要而定,結點實體可以保留在堆中,以作它用,在適當時候恢復或挪到鏈表別的地方,用一個“回收站”把這些結點地址保存起來即可。

鏈表的本質,不過是把一些在物理空間上雜亂無章的數據以邏輯順序串連起來,該串哪些、怎麽串,都是自由的,卻不一定非要讓數據從物理上消失不可,因爲有些數據是不能消失的。所以,free()的動作是可選的,不要死讀書,人家示範有free(),你就也寫free()。硬盤分區的邏輯號、物理磁盤的盤符順序,就類似鏈表,C、D、E、F盤的順序,未必是分區的物理順序,那是可以自由更改的,但物理順序不變,也可以不使用某個分區,但不可能free()掉實體。鏈表也是這般。

授人以渔,不授人以鱼。
2015-11-11 12:02
快速回复:关于二级指针的疑问
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.076876 second(s), 7 queries.
Copyright©2004-2019, BCCN.NET, All Rights Reserved