数据结构 单链表的初始化为什么要定义一个双重指针啊,定义成简单指针不行吗
typedefstructNode{DataTypedata;structNode*next;}ListNode,*LinkList;void(LinkList*head...
typedef struct Node
{
DataType data;
struct Node *next;
}ListNode,*LinkList;
void(LinkList *head) \\为什么要定义二重指针啊? 有这个必须性吗?我怎么觉得写成void (LinkList head)也是可以的啊 有没有懂的 能说明详细原因的? 展开
{
DataType data;
struct Node *next;
}ListNode,*LinkList;
void(LinkList *head) \\为什么要定义二重指针啊? 有这个必须性吗?我怎么觉得写成void (LinkList head)也是可以的啊 有没有懂的 能说明详细原因的? 展开
5个回答
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
因为有时你需要改变指针本身的值。例如,删除第一个节点的函数,你需要将head本身也改变掉:
void DeleteFirst( LinkList *head )
{
LinkList old_head = (*head);
*head = (*head)->next;
delete old_head;
}
如果不想使用二级指针,也可以使用引用:
void DeleteFirst( LinkList &head )
{
LinkList old_head = head;
head = head->next;
delete old_head;
}
void DeleteFirst( LinkList *head )
{
LinkList old_head = (*head);
*head = (*head)->next;
delete old_head;
}
如果不想使用二级指针,也可以使用引用:
void DeleteFirst( LinkList &head )
{
LinkList old_head = head;
head = head->next;
delete old_head;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我当初就这个问题和我舍友讨论了1天,在进行先序、中序或者后序遍历的时候,当利用递归的时候,没有二级指针的话,是没办法操作到精确的内容的,会出错。
具体的现在也想不起来例子和代码。但是往我这个方向去改一下遍历的程序,就可以明白了。明天要考车试,先睡觉了。
program团队为您服务!希望能帮到您!改日再叙。
具体的现在也想不起来例子和代码。但是往我这个方向去改一下遍历的程序,就可以明白了。明天要考车试,先睡觉了。
program团队为您服务!希望能帮到您!改日再叙。
追问
我又查了些资料,很多网友说定义二重指针目的是为了当指针作为函数参数时候,在链表调用时候能改变头指针的地址,从而能调动整个链表,用一级指针的话只能改变一个结点的值~
追答
这么一说我也懂了!!谢谢!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在子函数中传递指针时,子函数的形参要用指针的地址,就是双重指针,也叫二级指针。
typedef DataType int
typedef struct Node{
DataType data;
struct Node *next;
}LNode,*PNode,*LinkList;
int Initial(LinkList *h){ //参数为头结点指针的地址,也就是指针的指针*h=(LinkList)malloc(sizeof(LNode));
printf("初始化链表错误\n");
return 0;
}
*h->next =NULL;
return 0;
}
typedef DataType int
typedef struct Node{
DataType data;
struct Node *next;
}LNode,*PNode,*LinkList;
int Initial(LinkList *h){ //参数为头结点指针的地址,也就是指针的指针*h=(LinkList)malloc(sizeof(LNode));
printf("初始化链表错误\n");
return 0;
}
*h->next =NULL;
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
指针的指针就是本身,如果是void (LinkList head)那么传进去的参数就是指针型,但是如果是void(LinkList *head) 传进的参数就不会是指针型。
追问
我是想问是否有使用二重指针的必要性?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |