热门推荐








C语言链表那一块,Node * 和 *list分别是什么意思
问题描述
- 精选答案
-
定义一个链表的节点之前说到树,里面也有一个节点,节点是用来存数据的,不管是树还是其他什么数据结构,最终的目的都是用来处理数据的,所以节点里面包含两个东西,一个是指针,指针可以指向其他位置,可以是下一个节点,可以是上一个节点,还有一个东西就是数据本身,我们用一个int来代表数据,如果是很复杂的数据,我们也可以用结构体表示。
typedef struct Node{int data;struct Node * next; }*p_Node; 定义一个链表头结构体链表头也可以是一个节点,可以认为他就是一个指针,这个指针就指向这个链表的表头,所以我们还是用上面的结构体来声明这个头节点,再换个名字就好了。typedef struct head{p_Node root; }; 声明一个链表头一个链表没有头是不行的,就像一个家庭没有户主是不行的,也像一个球队,如果没有队长也是不行的,我们打正式比赛,还需要教练,但是正常一个球队,我们必须有一个队长,队长非常重要,就像一个链表一样,链表头也是一样的重要。struct head p_head;p_head.root = NULL; 我们的链表头是空的,没有指向任何地方,这样做有没有问题?所以执行了那几行代码后,会变成这个样子。这里提一下,可能很多初学者觉得这个有没有问题,到底是不是这样的,我们回顾声明和定义,什么是声明,什么是定义呢?声明和定义的主要区别是有没有分配内存空间,我们使用struct head p_head; 定义了一个指针,那么这个就需要分配内存空间。向链表插入一个数据插入数据的时候,因为我们需要该表头指针的位置,所以会做的判断,正常插入一个数据到链表里面去的时候,先是开辟一个节点,然后操作这个节点的next指针,然后让链表的尾部指向这个节点。链表源码示例#include "stdio.h" #include "stdlib.h"typedef struct Node{int data;struct Node * next; }*p_Node;typedef struct head{p_Node root; }; int list_insert(struct head * p_head,int data) {p_Node pTemp = (p_Node)malloc(sizeof(struct Node));pTemp->data = data;pTemp->next = NULL; if(p_head->root == NULL){ p_head->root = pTemp; printf("#1list_insert:%d
- 其他回答
-
*LinkList那个 可以认为是typedef struct Node * LinkList;也就是 这个*是前面那个Node的 即 LinkList 等效于Node * malloc前面的是一个强制转换 把返回值转换成Node *的类型一般的 可以这样写LinkList h = (Node *)malloc(sizeof(Node)); 也可以LinkList h = (LinkList)malloc(sizeof(Node)); 它们是等效的
猜你喜欢内容
-
中专,大专在读上哪查学籍
中专,大专在读上哪查学籍回答数有3条优质答案参考
-
文言文《明史杨璟传》
文言文《明史杨璟传》回答数有3条优质答案参考
-
布雷斯特商学院硕士学位可信吗
布雷斯特商学院硕士学位可信吗回答数有3条优质答案参考
-
正常情况下在法国会承认我的布雷斯特商学院学位吗
正常情况下在法国会承认我的布雷斯特商学院学位吗回答数有3条优质答案参考
-
南召县八年级秋期抽考成绩
南召县八年级秋期抽考成绩回答数有3条优质答案参考
-
45岁改行考律师有前途么
45岁改行考律师有前途么回答数有3条优质答案参考
-
WORD邮件合并一页8个准考证怎么做
WORD邮件合并一页8个准考证怎么做回答数有3条优质答案参考
-
公务员连续两年不称职怎么处理
公务员连续两年不称职怎么处理回答数有3条优质答案参考
-
pdf准考证如何把两页变成一页
pdf准考证如何把两页变成一页回答数有3条优质答案参考
-
单县到砀山县物流
单县到砀山县物流回答数有3条优质答案参考