以下都是个人笔记,如果错误 请务必提醒我 以免误导后人,谢谢! 链表与数组的不同 :数组是在内存空间申请一连串的地址 来存储同一类型的数据 如果使用的不好会造成内存空间利用率地下 好处方便使用 查询.遍历数组速度较快 :链表是通过指针将一个一个节点(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); }