创建一个有6个结点的单向链表,实现增加、删除、查找、移动、显示结点的基本功能 用c语言
时间: 2024-01-27 20:06:24 浏览: 112
单向链表,包括创建、插入、删除等基本操作
以下是用 C 语言实现的单向链表基本功能代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node* next;
};
struct Node* head = NULL;
void insert(int data) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = data;
newNode->next = NULL;
if (head == NULL) {
head = newNode;
return;
}
struct Node* temp = head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
void delete(int data) {
if (head == NULL) {
return;
}
if (head->data == data) {
struct Node* temp = head;
head = head->next;
free(temp);
return;
}
struct Node* temp = head;
while (temp->next != NULL && temp->next->data != data) {
temp = temp->next;
}
if (temp->next == NULL) {
return;
}
struct Node* nodeToDelete = temp->next;
temp->next = nodeToDelete->next;
free(nodeToDelete);
}
struct Node* search(int data) {
struct Node* temp = head;
while (temp != NULL && temp->data != data) {
temp = temp->next;
}
return temp;
}
void move(int from, int to) {
if (head == NULL) {
return;
}
struct Node* fromNode = search(from);
if (fromNode == NULL) {
return;
}
struct Node* toNode = search(to);
if (toNode == NULL) {
return;
}
delete(from);
struct Node* temp = toNode->next;
toNode->next = fromNode;
fromNode->next = temp;
}
void display() {
if (head == NULL) {
return;
}
struct Node* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
int main() {
insert(1);
insert(2);
insert(3);
insert(4);
insert(5);
insert(6);
display();
delete(3);
display();
move(2, 5);
display();
return 0;
}
```
在上述代码中,我们定义了一个 `Node` 结构体,包含一个整数数据和指向下一个节点的指针。我们使用 `head` 指针来跟踪链表的头部。我们实现了 `insert` 函数用于在链表末尾插入新的节点, `delete` 函数用于删除特定数据的节点, `search` 函数用于查找特定数据的节点, `move` 函数用于将一个节点移动到另一个节点的后面, `display` 函数用于显示链表中的所有节点。最后,在 `main` 函数中,我们创建了一个有 6 个节点的链表,并测试了上述函数。
阅读全文