前言
链表有些时候还是很好用的(我也不知道啥时候),正好有时间稳固一下基本知识。
定义:
链表的基本格式是一个结构体,结构体内部有数据成员和结构体指针,结构体指针用于指向下一个节点的地址,数据成员用于存储数据,结构如下:
typedef struct node { int data; struct node *next;}Node;
创建:
创建链表即将一个个的节点串连起来,即一个节点的指针指向下个节点地址。
创建时需要定义三个结构体指针,一个是链表的指针,一个是头节点指针(标志),用来进行链表的访问 ,还需要有一个临时的节点指
针,不能直接在原链表上直接进行创建,因为创建的指针不赋为空会指向非法地址,即野指针,具体操作:
Node *CreateList() { Node *L, *head, *tmp; int num; L = (Node *)malloc(sizeof(Node)); L -> next = NULL; head = L; while(scanf("%d", &num) && num) { tmp = (Node *)malloc(sizeof(Node) ); tmp -> data = num; tmp -> next = NULL; L -> next = tmp; L = tmp; } return head;}
读取:
对原链表进行读取操作,通过上一步的创建函数可以得到一个链表的头节点地址,这个头节点并没有任何信息,只存储了第一个节点的地址,所以我们需要从头节点的下一个
节点进行读取信息。
代码:
void ReadList(Node *head) { head = head -> next; while(head != NULL) { printf("%d\n",head -> data); head = head -> next; }}
大功告成!
这时你应该对链表有了一个初步认识
附完整代码:
#include#include #include #include #include #include