社区
C语言
帖子详情
关于链表函数调用参数问题
simple_Ant
2007-06-14 04:01:54
假如现有链表p,调用函数传入参数时 是传入地址&p,还是直接传p?
编程过程发现有时传入p或&p都行,而有时只能传入&p
望请高手解释下&p与p的区别 传授下经验!3q
...全文
325
12
打赏
收藏
关于链表函数调用参数问题
假如现有链表p,调用函数传入参数时 是传入地址&p,还是直接传p? 编程过程发现有时传入p或&p都行,而有时只能传入&p 望请高手解释下&p与p的区别 传授下经验!3q
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
simple_Ant
2007-06-18
打赏
举报
回复
迷迷糊糊算明白了点..
chenyu2202863
2007-06-14
打赏
举报
回复
如果实参用的是&开头的,就是传址
如果是形参&开头就是引用
当然,这些只有在C++里才成立~
niujian228
2007-06-14
打赏
举报
回复
传*rear,调用函数后rear的值为z,传rear,调函数后rear还是指向原来的链表.
simple_Ant
2007-06-14
打赏
举报
回复
之前就那样编的,这样输不出链表front,必须是&,好像和front=rear有关吧,是不是传rear就改变了front和rear的联系?
niujian228
2007-06-14
打赏
举报
回复
把put的定义改为
void put(int x,int y,list rear)
{
list z;
z=(list)malloc(sizeof(listnode));
z->a=x;
z->e=y;
rear->link=z;
rear=z;
}
就可以传rear了吧.
niujian228
2007-06-14
打赏
举报
回复
因为你定义void put(int x,int y,list *rear)时,"list *rear"项中形参就是"指向list的指针类型",所以调用它时,该项也应该对应指身list的指针类型.
simple_Ant
2007-06-14
打赏
举报
回复
那偶就发个问题,下面是多项式相加的链表程序,在add函数中front=rear,调用put时传&rear而不可以传rear,为啥子?
void put(int x,int y,list *rear)
{
list z;
z=(list)malloc(sizeof(listnode));
z->a=x;
z->e=y;
(*rear)->link=z;
*rear=z;
}
void add(list p,list q)
{
list rear,front,m,n,temp;
m=p->link;
n=q->link;
int sum;
rear=(list)malloc(sizeof(listnode));
front=rear;
while(m && n)
{
switch(COMPARE(m->e,n->e))
{
case 1:{
put(m->a,m->e,&rear);
m=m->link;
break;}
case 0:{
sum=m->a+n->a;
put(sum,m->e,&rear);
m=m->link;
n=n->link;
break;}
case -1:
{
put(n->a,n->e,&rear);
n=n->link;
break;
}
}
}
for(;m;m=m->link) put(m->a,m->e,&rear);
for(;n;n=n->link) put(n->a,n->e,&rear);
rear->link=NULL;
temp=front;front=front->link;free(temp);//去掉头结点
for(;front;front=front->link)
{
printf("%dx^%d",front->a,front->e);
if(front->link && front->link->a>0)
printf("+");
}
printf("\n");
}
simple_Ant
2007-06-14
打赏
举报
回复
是不是要进行修改时 比如插入删除等传&p 需要整个链表不修改时传p?
bargio_susie
2007-06-14
打赏
举报
回复
你也具体搞个例子出来看出现什么问题了。。。
kf701
2007-06-14
打赏
举报
回复
怎么这么多语法问题呢
simple_Ant
2007-06-14
打赏
举报
回复
额~不懂..可否详细下
lightnut
2007-06-14
打赏
举报
回复
传&p: 修改p本身;
传p: 修改p的拷贝.
c语言
链表
指针当
参数
,C语言创建
链表
错误之通过指针
参数
申请动态内存实例分析...
本文实例讲述了C语言创建
链表
中经典错误的通过指针
参数
申请动态内存,分享给大家供大家参考之用。具体实例如下:#include #include // 用malloc要包含这个头文件typedef struct node{int data;struct node* next;// 这个地方注意结构体变量的定义规则} Node;void createLinklist(Node* pHder, int l...
LeetCode - 234. 回文
链表
摘要: 判断回文
链表
的正确方法是通过快慢指针找到中点(快指针每次两步,慢指针每次一步),然后反转后半部分
链表
。比较时需同时遍历前半部分和反转后的后半部分。常见错误包括:
函数调用
时重复声明
参数
类型、快指针移动未检查空指针导致崩溃、错误地反转整个
链表
而非后半部分、比较时使用不正确指针。正确实现应确保:1)快指针移动时检查fast->next;2)仅反转后半部分
链表
;3)比较时使用原
链表
前半部分和反转后的后半部分。时间复杂度O(n),空间复杂度O(1)。
单
链表
的一些疑惑
作为自己的笔记记录一下 单
链表
的建立 typedef struct Node { ElemType data; struct Node *next; }Node; typedef struct Node *LinkList; Status InitList(LinkList *L) { *L=(LinkList)malloc(sizeof(Node)); /* 产生头结点,并使L指向此头结点 */ if(!(*L)) /* 存储分配失败 */ ...
剑指offer 输出
链表
/逆序输出
#include #include #include #include using namespace std; typedef int datatype; struct Node { datatype value; Node* Next_Node; }; //从头到尾打印
链表
中的结点 /*面试官是否允许这个函数允许改变输入,也就是改变输入
链表
的顺序是一个交流点*
详解数据结构单
链表
,你真的了解typedef结合结构体的用法和
链表
结构
参数
形式吗,这里给出数据结构极常见
问题
的解答
🎉每一个不曾起舞的日子都是对生命的辜负🎉 🎉昼夜偷偷交换一个吻,吻痕叫做月亮🎉 🎉前言 昨天博主去本站问答贴子逛了逛,然后发现了好多关于数据结构线性表,具体来说是单
链表
的
问题
。有的是没有一点思路,无从下手;有的是看不懂代码,不理解关键字以及被形参的形式气的不行,我总结了一下常见
问题
来给大家带来干货,到后面还有简单案例来巩固知识,弄透一题胜无脑刷百题,接下来是正文内容。 详解typedef关键字 含义 C语言允许用户使用 typedef 关键字来定义自己习惯的数据类型名称,来替代系统默....
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章