C_and_CPP 板


LINE

#include <stdio.h> #include <stdlib.h> typedef struct node { int data ; struct node *next; } NODE; void addend(NODE*,int); void addbeg(NODE*,int); void display(NODE*); NODE* _getnode(); int main(int argc, char *argv[]) { int item=100; NODE* a = _getnode(); NODE* b = _getnode(); NODE* c=_getnode(); a->next=NULL; b->next=NULL; c->next=NULL; printf("a's data:"); scanf("%d",&(a->data)); printf("\nb's data:"); scanf("%d",&(b->data)); printf("\nc's data:"); scanf("%d",&(c->data)); a->next=b; b->next=c; display(a); printf("\n"); addbeg(a,7889); /*NODE* newnode= _getnode(); newnode->data=7889; newnode->next=a; a=newnode;*/ display(a); //addend(a,500); //display(a); system("pause"); return 0; } void display(NODE* head) { NODE* ptr; ptr=head; if(head==NULL) { printf("its empty"); return; } while(ptr!=NULL) { printf("%d\n",ptr->data); ptr=ptr->next; } } NODE* _getnode() { return((NODE*)malloc(sizeof(NODE)) ) ; } void addend (NODE* head,int item ) { NODE* ptr; ptr=head; while(ptr->next!=NULL) { ptr=ptr->next; } NODE* newnode=_getnode(); newnode->data=item; newnode->next=NULL; ptr->next=newnode; } void addbeg (NODE* head,int item ) { NODE* newnode= _getnode(); newnode->data=item; newnode->next=head; head=newnode; } 用函式addend 把新节点加到list的尾端可以 但是不能用函式addbeg把新节点加入到list的开头 执行时跑不出7899 请问哪里有错误? 但如果直接在主程式把新节点放到list开头就可以 执行时有7899 谢谢 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.169.176.162
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1449134954.A.06B.html
1F:→ james1022jk: void addbeg(NODE*& head, int item) 12/03 18:17
2F:→ anoymouse: & 不是c++参考吗 12/03 18:27
3F:→ james1022jk: 你是c的话...就要再改一下了 12/03 18:27
4F:→ anoymouse: 摁 我这是看youtube的印度人写的 可是不知道为啥错 12/03 18:29
5F:→ anoymouse: https://www.youtube.com/watch?v=4SzyxSm_ySI 12/03 18:29
6F:→ anoymouse: 他的start是我的head 只不过他的start是全域的 12/03 18:30
7F:→ anoymouse: 所以他每次都不用把start传进函式 12/03 18:31
8F:→ anoymouse: 我把要传进去函式的地方通通改成不用了 就可以 12/03 18:44
9F:→ anoymouse: 难到指标不能在函式里面重新指定? 12/03 19:25
10F:推 overhead: C的话此情况要用双重指标* 12/03 20:09
11F:→ stupid0319: 个人认为typedef struct node *NODE 这样写比较合适 12/03 20:10
12F:→ james1022jk: youtube里头的跟楼上的宣告是一样的,刚忘记讲= = 12/03 20:13
13F:推 overhead: 以你目前写法,你等於是以传值方式将指标复制进addbeg, 12/03 20:14
14F:→ overhead: 这跟传个int结果在func里改不了的原理一样 12/03 20:14
15F:→ stupid0319: link要双向的话,应当加一个 node* pre;指向上一个的 12/03 20:15
16F:→ overhead: 举例: 将int a用&a传入func可改a值,但int *b用b传入是 12/03 20:20
17F:→ overhead: 改不了b值,因为逻辑上跟int c用c传入改不了c值一样 12/03 20:20
18F:→ overhead: 如果是int *d,你要用func(int **pd)把d用&d的方式传入 12/03 20:22
19F:→ overhead: 才能改d值 12/03 20:23
20F:→ anoymouse: 了解 谢谢! 12/03 22:04
21F:推 IhateOGC: malloc 12/04 00:42







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灯, 水草

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

TOP