2 qq 36743111 qq_36743111 于 2017.09.15 17:34 提问

链表问题!!!!!实在搞不懂 求指教

老师,你看,我在Add函数里添加节点,最后head指针指向表尾,可在主函数里调用时head又指向了表头,为什么呢?
#include
#include
struct link
{
struct link* next;
int data;
};
void Add(struct link*head);
void Free(struct link*head);
int main()
{
struct link* head=NULL,* p=NULL;
p=(struct link*)malloc(sizeof(struct link));
head=p;
head->data=100;
Add(head);
printf("%d\n",head->data);
printf("%d\n",head->next->data);
Free(head);
return 0;
}
void Add(struct link*head)
{
int i;
struct link* p=NULL;
for(i=1; i {
p=(struct link*)malloc(sizeof(struct link));
p->data=i;
p->next=NULL;
if(head!=NULL)
{
head->next=p;
head=p;
}
else
{
head=p;
}
}
}
void Free(struct link*head)
{
struct link* p=NULL;
while(head!=NULL)
{
p=head;
head=head->next;
free(p);
printf("清空\n");
}
}

2个回答

cocos_yang
cocos_yang   2017.09.16 12:01
已采纳

Add(struct link *head); //head是个形参,在函数中改变不了它的值,只能改变它指向的数据的值,如:head->data,head->next的值;

cocos_yang
cocos_yang main函数里面定义的head值一直没变过,都是main函数里你malloc后p赋给它的值。
10 个月之前 回复
qq_36743111
qq_36743111 那head值是什么
10 个月之前 回复
lihualoveyou
lihualoveyou   2017.09.15 22:01

指针使用有问题。
如果参考传递了指针,在函数中对指针进行赋值不会传递函数外面去。需要用指针的指针。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
_tcp_iocp_vc6_1.rar
_tcp_iocp_vc6_1.rar 帮看看问题,求指教
用回溯法链表求解迷宫问题
用回溯法链表求解迷宫问题,并加上完整的人物演示过程 (按一键小人开始搜索)创建人: 颜清国 2006年3月18日(下载源码(点击右键,目标另存为))说明: 程序中按照上-右-下-左搜索,运行效果如图#include"graphics.h"#include"stdio.h"#include"dos.h"#define LENGTH sizeof(struc
有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。
第一种解法: [cpp] view plaincopyprint? /*  *copyright@nciaebupt 转载请注明出处  *问题:有两个序列a,b,大小都为n,序列元素的值任意整数,无序;  *要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。  *比如 a=[100 ,99 ,98
算法:寻找两个单项链表的交点
问题:寻找两个单项链表的交点。
算式计算器C++实现代码(顺序栈结构 增加了一些功能 求指教)
转自http://blog.sina.com.cn/s/blog_72e53c4c0100qw5n.html 数据结构课上学习栈结构的时候 根据老师的实验要求用VC++6.0平台写了这段代码除了加减乘除乘方,稍微自己加了一些好玩的小功能,比如计算阶乘"!",三角函数,比如正弦 "sin",对数"log"与"ln",常量pi(圆周率),自然对数底数"e"也加进去了,算是初步模仿中学用的科学计算器吧
Aandroid88KUY
求指教
solidworks2010下载地址+安装+破解图解
solidworks2010下载地址+安装+破解图解,亲测绝对可用。实在搞不懂不懂留言QQ:1875983213...
猴子吃桃程序(数组算法,链表算法,递归算法)
c语言版的猴子吃桃的源程序,用不同的方法求解桃子的总数。其中有递归算法,数组算法,链表算法。
用循环链表解决约瑟夫问题
1、约瑟夫问题的         编号为1,2,....,N的N个人按顺时针方向围坐一圈,每人持有一个密码(正整数),一开始任选一个正整数作为报数上限值M,从指定的人K开始按顺时针方向自1开始顺序报数,报到M时停止报数。报M的人出列,将他的密码作为新的M值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。试设计一个程序求出出列顺序。         解决思路还是
数组指针问题(求指教)
#include using namespace std; int main() {  float(**q)[5];  float a[1][5]={{1,2,3,4,5}};  q=&new float [1][5];//编译可以通过  //q=&a;//编译通不过  //q=new float*;//此处我原本想先给q分配一个内存空间,用于存取二维数组a的地址  //却找不到