以下都是个人笔记,如果错误 请务必提醒我 以免误导后人,谢谢!
链表与数组的不同
:数组是在内存空间申请一连串的地址 来存储同一类型的数据
如果使用的不好会造成内存空间利用率地下
好处方便使用 查询.遍历数组速度较快
:链表是通过指针将一个一个节点(node)链接,形成一个数据集合
优点是链接一个个节点而不是需要一连串的内存地址
但查询,遍历速度较慢
链表的每一个节点都是有结构体指针组成的
例如
typedef struct _node //typedef int A 效果:自定义数据类型名字 将数int名字定义为A
{
int data //数据域 名字和类型可自己改变
struct _node *next // 指针域 指向下一个节点
}Node; //将struct _node 定义为Node
上面就是一个标准的单链表数据节点
头指针-头结点[data | next]-[节点]
头指针就是个指针 他指向头结点
这样子头指针就相当于是头结点
头结点的数据域存储数据 ,指针域指向下一个节点的地址
如此循环就链接起来
typedef struct _node
{
int data //数据域 名字和类型可自己改变
struct _node *next // 指针域 指向下一个节点
}Node
Node *Create(int data)
{ //创建节点
Node *node = NULL; //先给一个NULL 暂时不太清楚
node = (Node *)malloc(sizeof(Node)) //给node变量一个Node*类型 大小是Node类型字节的空间
memset(node,o,sizoef(Node) //清理内存空间里面的垃圾
node->data = data; //将实际参数传给函数 存入数据域中
node->next = NULL; //只创建节点
printf("%d",node->data);
printf("%d",node->next);
}