关于用C语言实现单链表的各种操作(二),其中包含了单链表的插入、删除节点等操作,下面我来详细讲解一下这个完整攻略。
1、单链表插入节点操作
单链表插入节点是常用的操作之一,可以在链表中插入一个新的节点来满足需求。
插入节点前的准备
在插入节点之前,需要对需要插入节点的前一个节点进行处理。对于插入节点操作,需要遍历链表找到需要插入节点的位置,以及需要插入节点的前一个节点,代码如下所示:
// 遍历链表,找到需要插入节点的位置和需要插入节点的前一个节点
while(current->next != NULL && current->next->element < element) {
current = current->next;
}
插入节点的方法
找到需要插入节点的位置后,就可以插入新节点了。插入节点的方法基本上就两种:
- 头插法
- 尾插法
头插法
在单链表的头部插入元素时称为头插法,即每次将新节点插入到链表头部,需要将新节点的指针指向原有的头结点,将头指针指向新节点即可。
Node* newnode;
newnode = malloc(sizeof(Node));
newnode->element = element;
newnode->next = head;
head = newnode;
尾插法
在单链表的尾部插入元素时称为尾插法,即每次将新节点插入到链表尾部,需要将新节点的指针指向NULL,将当前尾节点的指针指向新节点即可。
Node* newnode;
newnode = malloc(sizeof(Node));
newnode->element = element;
newnode->next = NULL;
if(head == NULL) {
head = newnode;
} else {
Node* current = head;
while(current->next != NULL) {
current = current->next;
}
current->next = newnode;
}
示例
假设现在有一个链表 {4 -> 5 -> 7 -> NULL},想要在第二个位置插入一个节点值为6的节点。则需要遍历到节点5的位置,然后插入节点,链表变为 {4 -> 5 -> 6 -> 7 -> NULL}。
2、单链表删除节点操作
单链表删除节点是常用的操作之一,可以在链表中删除一个节点来满足需求。
删除节点前的准备
在删除节点之前,需要对需要删除节点的前一个节点进行处理。对于删除节点操作,需要遍历链表找到需要删除的节点和需要删除节点的前一个节点,代码如下所示:
// 遍历链表,找到需要删除节点的位置和需要删除节点的前一个节点
while(current->next != NULL && current->next->element != element) {
current = current->next;
}
删除节点的方法
在找到需要删除节点的位置和前一个节点后,删除节点也有两种方法:
- 删除头节点
- 删除非头节点
删除头节点
删除单链表的头节点时,需要将头指针指向要删除的节点的next节点即可。
Node* temp;
temp = head;
head = head->next;
free(temp);
删除非头节点
删除单链表的非头节点时,需要将要删除节点的前一个节点的next节点指向删除节点的next节点即可。
Node* temp;
temp = current->next;
current->next = current->next->next;
free(temp);
示例
假设现在有一个链表 {4 -> 5 -> 6 -> 7 -> NULL},想要删除节点值为6的节点。则需要遍历到节点5的位置,然后将节点5的next节点修改为节点7即可,链表变为 {4 -> 5 -> 7 -> NULL}。
以上就是单链表的插入节点和删除节点的详细攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用C语言实现单链表的各种操作(二) - Python技术站