创建一个由6个结点的单向链表,实现结点的增加、删除、查找、移动、遍历显示
时间: 2023-11-21 08:04:09 浏览: 74
好的,您想问关于链表的内容。下面是回答您问题的具体步骤:
1. 创建一个由6个结点的单向链表
单向链表可以通过定义一个结构体来实现,具体代码如下:
```c++
struct ListNode {
int value;
ListNode* next;
ListNode(int value): value(value), next(NULL) {}
};
```
然后,我们可以定义一个头指针来指向链表的第一个结点。实现代码如下:
```c++
ListNode* head = new ListNode(0);
ListNode* p = head;
for (int i = 1; i <= 6; i++) {
ListNode* node = new ListNode(i);
p->next = node;
p = p->next;
}
```
这样,我们就实现了一个由6个结点的单向链表。
2. 实现结点的增加、删除、查找、移动
单向链表的操作主要是基于指针完成的。下面是具体操作:
- 增加结点
为了方便,我们定义一个尾指针tail来指向链表的最后一个结点,这样就可以方便地在链表尾部添加新结点。实现代码如下:
```c++
ListNode* tail = head;
while (tail->next != NULL) {
tail = tail->next;
}
ListNode* node = new ListNode(7);
tail->next = node;
```
这样就在链表尾部添加了一个值为7的新结点。
- 删除结点
删除结点需要先找到要删除的结点,然后再通过指针重新连接前后两个结点。实现代码如下:
```c++
ListNode* p = head;
while (p != NULL && p->value != 3) {
p = p->next;
}
if (p != NULL) {
ListNode* temp = p->next;
p->next = temp->next;
delete temp;
}
```
这样就删除了值为3的结点。
- 查找结点
查找结点的方法很简单,只需要沿着链表依次比较每个结点的值,直到找到要查找的结点或者到达链表尾部。实现代码如下:
```c++
ListNode* p = head;
while (p != NULL && p->value != 4) {
p = p->next;
}
if (p != NULL) {
// 找到了值为4的结点
} else {
// 没有找到
}
```
- 移动结点
移动结点需要先找到要移动的结点,然后通过指针重新连接前后两个结点。实现代码如下:
```c++
ListNode* p = head;
while (p != NULL && p->value != 2) {
p = p->next;
}
if (p != NULL) {
ListNode* temp = p->next;
p->next = temp->next;
temp->next = head->next;
head->next = temp;
}
```
这样就把值为2的结点移动到链表头部。
3. 遍历显示
遍历链表需要沿着链表依次访问每个结点,并将结点的值打印出来即可。实现代码如下:
```c++
ListNode* p = head->next;
while (p != NULL) {
cout << p->value << " ";
p = p->next;
}
cout << endl;
```
这样就可以遍历显示整个链表了。
阅读全文