typedef struct Node{
int val;
struct Node *next;
}Node,*ptrNode;
1、结构体的大小
参考链接
https://blog.csdn.net/jiaozhenxinaichenme/article/details/53097007
char 1
int 4
64位系统中,不管什么类型的指针的大小都是8
cpu一次读取8字节,在结构体中会对不满足8字节的类型补全为8字节
一个实体结构体的大小为补全后所有变量大小的和。
sizeof(struct Node)=16;(补全)
sizeof(struct Node *)=8;(指针的大小都为8,存放结构体的首地址)
2、静态链表
Node node1={1,NULL};
Node node2={2,NULL};
Node node3={3,NULL};
node1.next=&node2;
node2.next=&node3;
node3.next= nullptr;
3、malloc动态内存申请
malloc向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。
3、动态链表
头插法
void insertNode(ptrNode headNode,int data){
struct Node* newNode=(struct Node*)malloc(sizeof(struct Node));
newNode->val=data;
newNode->next=headNode->next;
headNode->next=newNode;
}
尾插法
void insertNOdeTail(ptrNode headNode){
ptrNode last=headNode;
for(int i=0;i<4;i++){
struct Node* newNode=(struct Node*)malloc(sizeof(struct Node));
newNode->val=i;
last->next=newNode;
last=newNode;
}
}
需要有个头指针,存放第一个节点的地址
尾结点指针域为空
实时分配空间