一、链表的C实现
struct Node{
int data; //当链表中存储的数据类型不同时,data的定义类型也不同
struct Node* next;
};
二、在链表头部插入一个节点
1、插入功能实现的逻辑
struct Node* head = NULL;
当我们创建一个新的链表时,我们首先创建的是一个节点的指针变量 head ,它代表了链表的头,也即第一个节点。此时链表中还没有添加任何元素,所以 head = NULL。
struct Node* Insert(struct Node* head,int x) {
struct Node* temp = (struct Node*)malloc(sizeof(struct Node));
temp->data = x;
temp->next = head;
head = temp;
return head;
}
在这里定义了一个Insert()函数,传入头节点的地址参数,以及要插入的元素值,由于我们是从链表头插入新的元素,所以每次插入,链表头的地址会不同,函数返回这个新的链表头。
当链表为空时,Insert()函数首先创建在heap上创建了一个temp节点,并且将要插入的数据存入temp->data。由于插入的是链表的第一个结点恰好也是最后一个,此时head = NULL,temp->next = head,也即temp->next = NULL。最后让head = temp, return head。我们成功在heap上创建了第一个节点,并且用head记录下了它。