用C语言创建一个由6个结点的单向链表,实现结点的增加、删除、查找、移动、遍历显示等功能。
时间: 2023-12-21 08:03:24 浏览: 35
好的,你可以先声明单向链表的节点结构体,如下所示:
```
typedef struct ListNode {
int data; // 节点数据
struct ListNode *next; // 指向下一个节点的指针
} ListNode;
```
然后,可以定义一个指向链表头结点的指针,用于操作链表:
```
ListNode *head = NULL;
```
接着,可以实现单向链表的各种操作函数,具体如下:
1. 插入节点
```
void insertNode(int data) {
ListNode *pNewNode = (ListNode *)malloc(sizeof(ListNode));
pNewNode->data = data;
pNewNode->next = NULL;
if (head == NULL) {
head = pNewNode;
}
else {
ListNode *pNode = head;
while (pNode->next != NULL) {
pNode = pNode->next;
}
pNode->next = pNewNode;
}
}
```
2. 删除节点
```
void deleteNode(ListNode *pNode) {
if (head == NULL || pNode == NULL) {
return;
}
if (pNode == head) {
head = head->next;
free(pNode);
}
else {
ListNode *pPrevNode = head;
while (pPrevNode != NULL && pPrevNode->next != pNode) {
pPrevNode = pPrevNode->next;
}
if (pPrevNode == NULL) {
return;
}
pPrevNode->next = pNode->next;
free(pNode);
}
}
```
3. 查找节点
```
ListNode *findNode(int data) {
if (head == NULL) {
return NULL;
}
ListNode *pNode = head;
while (pNode != NULL && pNode->data != data) {
pNode = pNode->next;
}
return pNode;
}
```
4. 移动节点
```
void moveNode(ListNode *pNode) {
if (head == NULL || pNode == NULL || pNode == head) {
return;
}
ListNode *pPrevNode = head;
while (pPrevNode != NULL && pPrevNode->next != pNode) {
pPrevNode = pPrevNode->next;
}
if (pPrevNode == NULL) {
return;
}
pPrevNode->next = pNode->next;
pNode->next = head;
head = pNode;
}
```
5. 遍历显示
```
void displayList() {
if (head == NULL) {
return;
}
ListNode *pNode = head;
while (pNode != NULL) {
printf("%d ", pNode->data);
pNode = pNode->next;
}
printf("\n");
}
```
以上就是用C语言创建由6个结点的单向链表,实现结点增加、删除、查找、移动、遍历显示等功能的代码实现。希望能够对你有所帮助。