社区
数据结构与算法
帖子详情
指针的问题????????UP有分.
iceadf
2003-08-26 09:57:25
再链表插入的函数中为什么头节点是指针的指针类型.好像就用指针就可以呀.
大家能不能解释一下.明白后马上结帖.再止谢过.
...全文
20
13
打赏
收藏
指针的问题????????UP有分.
再链表插入的函数中为什么头节点是指针的指针类型.好像就用指针就可以呀. 大家能不能解释一下.明白后马上结帖.再止谢过.
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
FishCrazy
2003-08-27
打赏
举报
回复
UP ;)
FishCrazy
2003-08-27
打赏
举报
回复
我看你关键是要理解
传值还有传地址两者的定义以及它们之间的差别
wangmin_yjitx
2003-08-27
打赏
举报
回复
up
challengecxi
2003-08-27
打赏
举报
回复
对于数据结构一些问题,不妨到下面网址下载一个演示软件,挺有用的。
http://www.cnitexam.com/down/index.php?o=display;id=25
challengecxi
2003-08-27
打赏
举报
回复
*p改变以后,p的值是不变的(p是一个地址值,*p是p指针所指向的类型值)。**p是指向指针类型的指针,*p改变以后,**p的地址值不变,但其指向的类型值改变。
其实,函数调用可以用指针的引用,这样就能改变形参的值,对于你的程序第一行若改为“seqtree * & root”,函数里的语句改变root后,推出函数以后root的值就会改变,下面这个简单的例子希望能帮你理解
#include<iostream>
using namespace std;
struct node
{
int d;
node * next;
};
void insert(node * & r)
{
int ins;
cin>>ins;
node * ptr= new node;
ptr->next=0;
ptr->d=ins;
r->next=ptr;
}
int main()
{
node *p=new node;
p->d=3;
p->next=0;
insert(p);
while(p)
{
cout<<p->d<<endl;
p=p->next;
}
return 0;
}
这个函数当输入完ins以后输出应为
3
ins
wbh0360
2003-08-27
打赏
举报
回复
可以啊,不过不知道你程序怎么写的?
boodweb
2003-08-26
打赏
举报
回复
哦,那这样的话应该是seqtree **root才对阿,否则编译的时候怎么会出问题阿
用指针的指针应该是为了能够改变root吧(用*root=ins),否则root不可能改变
btw:程序里的root=ins是不是要写成*root=ins呢
iceadf
2003-08-26
打赏
举报
回复
to challengecxi(challenge):
int **p, 按你的意思,如果*p的值改变的话,那*p,p,**p.这三个值将如何改变呀。/
iceadf
2003-08-26
打赏
举报
回复
void insert(seqtree *root, int val)
{
seqtree *ins,*p=root;
ins=new seqtree;
ins->value=val;
ins->left=ins->right=NULL;
if(root==NULL)
{
root=ins;
return;
}
for(;;)
{
if(p->value<ins->value)
{
if(p->left==NULL)
{
p->left=ins;
break;
}
else p=p->left;
}
else
{
if(p->right==NULL)
{
p->right=ins;
break;
}
else p=p->right;
}
}
}
比如说上面这个排序二叉树的插入函数,其形参就一定要是指针的指针,如果换成是指针就编译出问题。
challengecxi
2003-08-26
打赏
举报
回复
我在做数据结构上机作业时就在这个问题上纠缠了好久TT
challengecxi
2003-08-26
打赏
举报
回复
指向指针(假设为ptr1)的指针类型(假设为ptr2)改变后,ptr1的值才会改变,你自己试试就知道了。
boodweb
2003-08-26
打赏
举报
回复
没看懂啊,能不能举个例子
链表还有这么一说吗?
SoftWare1999
2003-08-26
打赏
举报
回复
在不含头节点的链表中,返回第一个指针类型的地址
什么是智能
指针
?为什么要用智能
指针
?
什么是智能
指针
?为什么要用智能
指针
?如何打破循环引用的
问题
?对于资源管理有什么作用? 看到这些
问题
,心里就发毛。什么是智能
指针
啊?为什么要用智能
指针
啊?循环引用又是什么鬼?实现?我❌... 首先我们来看一下第一个
问题
,什么是智能
指针
? 常见的智能
指针
有几种,一种是共享
指针
shared_ptr,一种是独享
指针
unique_ptr,一种是弱
指针
weak_ptr,一种是很久没用过的auto_ptr(被u...
【堆】的实现
文章目录1. ????堆的概念和结构2. ????堆向下调整法3. ????堆向上调整法4. ????堆的创建5. ????堆的插入6. ????堆的删除7. ????堆的数据个数8. ????取堆顶的数据9. ????堆的销毁0.完整代码 1. ????堆的概念和结构 堆(heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: 堆中某个节点的值总是不大于(大堆)或不小于(小堆)其父节点的值;2.堆总是一棵完全二叉树。 一般情况下,堆的所有元素
C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失
问题
的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小...
C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空。例如:string str=null; 是正确的,int i=null; 编译器就会报错。为了使值类型也可为空,就可以使用可空类型,即用可空类型修饰符"?"来表示,表现形式为"T?"例如:int? 表示可空的整形,DateT...
c/c++编程学习:空
指针
是什么?
什么是空
指针
? 对于每一种
指针
类型,都有一个特殊的值——空
指针
,空
指针
与其他所有
指针
值区分开来,保证其不会指向任何函数或者对象等有意义的数据。因此,取地址运算符 & 永远不会产生空
指针
,malloc() 函数成功时永远不会返回空
指针
。 C语言中空
指针
在概念上不同于未初始化的
指针
,因为空
指针
不指向任何函数或对象,而未初始化的
指针
指向是不确定的,它可能指向任何位置,所以未初始化的
指针
只是有可能是空
指针
。 C语言中的空
指针
其实就是一个有特殊值的
指针
。不同类型的空
指针
值可能不同(尽管很多平台都将空
指针
指针
深度剖析——深入浅出解读悬空
指针
和指向
指针
,告诉你为什么不能没有
指针
目录 介绍 背景 什么是
指针
? 什么是指向
指针
的
指针
? 悬空
指针
指针
从哪里开始? 局部变量和
指针
之间的差异 那么什么时候没有
指针
就不可能实现? 但是,有那么多神奇的智能
指针
! 什么是调用堆栈和堆栈溢出.. 不能没有
指针
-案例1 不能没有
指针
-案例2 不能没有
指针
-案例3 不能没有
指针
-案例4 不能没有
指针
-案例5 不能没有
指针
-案例6 为什么
指针
如此强大 对象
指针
和功能
指针
之间的区别 按值传递参数 通过引用传递参数 兴趣点 介绍
指针
是很多初学者的生死大敌,堪
数据结构与算法
33,027
社区成员
35,335
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章