期末考试学习数据结构 学麻了 记录一下
我是个新手 如果所说的话有错误 还望各位大佬多多包涵或是指正
下面是新建一个单链表节点的结构体 一个指针域一个数据域
#include<stdio.h>
#include<stdlib.h>
typedef struct Node{
int data;
struct Node *next;
}Node, *LinkList;
然后定义初始化链表的函数
这个函数就是向头指针所在的地址分配内存 然后令头指针指向NULL
因为这里LinkList本来就是一个指针
如果这里的第一行改为void InitList(LinkList *L)
就相当于往InitList传入了 **Node
就会报错 " *L is a pointer; did you mean to use '->'? "
如果有这个报错建议检查一下是否传入了多重指针
void InitList(LinkList L){
L = (LinkList)malloc(sizeof(Node));
L -> next = NULL;
}
接下来是main()
指针L一定要初始化为NULL
最后free()释放指针L的内存后要释放指针L为NULL
否则main()不能正常返回0
int main(){
LinkList L=NULL; /*指针初始化为NULL*/
InitList(L);
free(L); /* 注意malloc()后要释放内存 */
L = NULL; /* 释放内存后一定要释放指针 */
return 0;
}
另外
关于箭头"->"的用法 我认为(1条消息) C语言中访问结构体成员时 点 . 和 箭头 -> 的区别_回归心灵的博客-优快云博客_c语言.和箭头区别
说得挺好