State createLink(Node** head),其中Node是结点结构体,函数返回建立的链表的头指针。问题:创建链表函数的形参为什么使用二重指针?
1条回答 默认 最新
关注
让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
使用二重指针是为了能够修改传入的头指针,从而使其指向新创建的链表。如果使用单重指针,则只能修改该指针指向的结构体中的指针,而无法修改原头指针的指向。 例如,假设原本有一个链表,其头指针为`head`,现在需要创建一个新的链表并将新链表的头指针赋值给`head`,则需要使用二重指针:typedef struct Node { int data; struct Node* next; }Node; Node* createLink(Node** head) { Node* newNode = NULL; Node* tail = NULL; int data = 0; // 读入新链表结点值,直到用户输入 -1 printf("请输入新链表结点值(-1 结束):"); scanf_s("%d", &data); while (data != -1) { // 新建结点并为其赋值 newNode = (Node*)malloc(sizeof(Node)); newNode->data = data; newNode->next = NULL; if (*head == NULL) { *head = newNode; tail = newNode; } else { tail->next = newNode; tail = newNode; } printf("请输入新链表结点值(-1 结束):"); scanf_s("%d", &data); } return *head; } int main() { Node* head = NULL; // 原链表头指针 Node* newHead = NULL; // 新链表头指针 // 创建新链表并将其头指针赋值给原链表的头指针 newHead = createLink(&head); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 plus模型贡献度为nan
- ¥25 使用cube ai 导入onnx模型时报错
- ¥15 关于#微信小程序#的问题:用一个网页显示所有关联的微信小程序数据,包括每个小程序的用户访问量
- ¥15 root的安卓12系统上,如何使apk获得root或者高级别的系统权限?
- ¥20 关于#matlab#的问题:如果用MATLAB函数delayseq可以对分数延时,但是延时后波形较原波形有幅度上的改变
- ¥15 使用华为ENSP软件模拟实现该实验拓扑
- ¥15 通过程序读取主板上报税口的数据
- ¥15 matlab修改为并行
- ¥15 尝试访问%1服务的windows注册表时遇到问题。必须先解决此问题,然后才能运行安装过程。(请确认您正在使用管理员权限运行)373
- ¥15 (关键词-运算放大器)