社区
C语言
帖子详情
关于链表函数调用参数问题
simple_Ant
2007-06-14 04:01:54
假如现有链表p,调用函数传入参数时 是传入地址&p,还是直接传p?
编程过程发现有时传入p或&p都行,而有时只能传入&p
望请高手解释下&p与p的区别 传授下经验!3q
...全文
292
12
打赏
收藏
关于链表函数调用参数问题
假如现有链表p,调用函数传入参数时 是传入地址&p,还是直接传p? 编程过程发现有时传入p或&p都行,而有时只能传入&p 望请高手解释下&p与p的区别 传授下经验!3q
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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语言复习:关于
链表
的函数
参数
*L,&L.
关于
链表
的函数
参数
1.在
链表
中有时
参数
指针是:*&L2.有时是:指针是*L 1.在
链表
中有时
参数
指针是:*&L ListInsert(LinkNode *&L,int i,ElemType e) InitList(LinkNode *&L) 2.有时是:指针是*L DispList(LinkNode *L) 那什么时候用 &L,或者这个L? 指针是对:地址存储单元的数据域进行修改 加了:*号对main()的数据可以修改。 &是引用:相当于 LinkNode
C/C++实现
链表
的函数和调用
#include<bits/stdc++.h> using namespace std; typedef struct _Node { int value; struct _Node *next; }Node; typedef struct _list { Node *head; }List; void _add(List *plist, int num); void pr...
通过子
函数调用
创建
链表
的三种方式
创建
链表
的三种方式: 1.在子函数中定义头结点并为头结点开辟空间,将新的数据结点链接在头结点之后,最后返回头结点指针。 2.在主函数中定义头结点并为头结点开辟空间,此时头结点已经创建好,只需要将头结点指针传给子函数即可,子
函数调用
结束后长长的
链表
自然就被创建好了。 3.只在主函数中定义头结点,但并不开辟空间,此时头结点指针还没有被赋予初值,将头指针的的引用传给子函数,子函数为头结点开辟空间之后,自然
链表
数据结构的创建和调用(C++)
在数据结构与算法中,
链表
是一个稍微有些难以理解的数据结构。本文主要总结
链表
的基本编程用法,通过创建一个
链表
和调用
链表
每个节点的数据代码,展示基本的
链表
数据结构用法。 1.1原理讲解
链表
是在物理上可以是非连续的存储空间,由一片片存储区域组成,每个存储区域又被成为节点,每个节点又指向下一个节点,用一个
链表
头和
链表
尾串起来,所以被称为
链表
。
链表
的每个节点由两部组成,分别是数据区和指针。数据区存储需...
写
链表
时的
问题
——函数
参数
原程序 #include #include #include using namespace std; typedef struct _ListNode{ int data; _ListNode* next; } ListNode; ListNode* CreateList() { ListNode* n
C语言
70,024
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章