C_and_CPP 板


LINE

看了四天终於有一点头绪了 因为不是本科系,想把自己的想法PO上来请大家指正 程式码: https://pastebin.com/pvip381x --------------------------------------------------------- 第7行~11行 --------------------------------------------------------- struct Node { int data; struct Node *link; }; 定义一个资料结构叫做Node,包含两个部分 一个是int 的资料型态,变数名称为data 另一个是"存放"struct Node的指标变数,指标变数名称为link //更正: link 指标变数指向 struct Node// 因为是指向 struct Node 所以要 struct Node *link; 不可以 int *link --------------------------------------------------------- 22行~31行 --------------------------------------------------------- nodePointer GetNode() { nodePointer NewNode; NewNode=(nodePointer) malloc(sizeof(node)); if(NewNode==NULL) { printf("记忆体不足!"); exit(1); } return NewNode; } 23行 定义一个指标变数为 NewNode 24行 sizeof(node)计算出一个节点需要多少空间的记忆体 再用malloc 配置一个记忆体空间 并回传开头的记忆体位置,(nodePointer)转型指标 有点像是格式化这个空间成为struct Node 最後NewNod为该空间的指标。 // 更正: (nodePointer) 代表malloc指标指向struct Node --------------------------------------------------------- 75行开始 --------------------------------------------------------- 由main读这个程式,当Balls=insertLast(Balls,27); 程式呼叫insertLast函式时,Balls 值为NULL,data 为27 会复制一份给 L=insertFirst(L,d) 中的(L,d) 此时L = NULL , d = 27 执行 insertFirst(L,d) 新增/插入第一个节点 39行 nodePointer insertFirst(nodePointer L,int d) { nodePointer n; n=GetNode(); n->data=d; n->link=L; L=n; return L; } n 为指标,指向新节点 *(n).data = 27 *(n).data = NULL L=n; L 的值原本是 NULL 改成 n (指标) 最後回传L Balls=insertLast(Balls,27); Balls=L=n 此时串列第一个指标为 Balls 请大家不吝指正,谢谢~ --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.226.77.16
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1520746207.A.207.html
1F:推 jerryh001: struct node* 表示 "指到的东西是node不是其他东西" 03/11 13:32
2F:→ jerryh001: 和占用大小无关 03/11 13:32
※ 编辑: pi2324 (36.226.77.16), 03/11/2018 13:57:19
3F:推 smartjay: 可以参考ocw上面有开资料结构 03/11 19:39
4F:→ hunandy14: 写C的话 malloc 前面不要转型比较好 03/11 19:52
5F:→ hunandy14: 没写到 free() 的函式 03/11 20:10
6F:→ pi2324: 请问指标为什麽一定要int *跟他说是指向谁的指标呢? 03/11 23:09
7F:→ pi2324: 反正记忆体位置不就一个数字 03/11 23:10
8F:→ pi2324: 还是指向int才知道占用多少记忆体呢 03/11 23:17
9F:→ jerryh001: 看不懂 你要指到int 就用int* 要node 就node* 03/11 23:20
10F:→ james732: 指标的类型主要是让你做dereference的时候用的吧 03/12 00:00
11F:→ james732: int *p = ...; int a = *p; 要知道p是什麽才能做*p 03/12 00:00
12F:→ james732: struct Node *p 与 int *p 其实都只是一个值而已 03/12 00:01
13F:推 steve1012: 你说的没错 但你要存取资料的话要知道他的资料型态 03/12 04:37
14F:推 soso7885: 请问h大,为什麽malloc 前不要转型比较好呢?诚心发问 03/12 11:34
15F:→ hunandy14: 前一阵子版上的讨论 https://goo.gl/J8unR2 03/13 00:21
16F:→ hunandy14: 延伸 james 补个例子,应该比较好理解~ 03/13 00:34
17F:→ hunandy14: int i=65; printf("%s\n", (char*)(&i)); 03/13 00:34







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP