创建一个由6个结点的单向链表,并实现增加、删除、查找、移动、显示结点的基本功能
时间: 2023-10-19 10:23:22 浏览: 34
好的,这是一个关于数据结构的问题,可以给出详细的回答。
创建一个由6个结点的单向链表的过程如下:
1. 定义链表的结构体:
```
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
```
2. 创建6个结点,并将它们串联:
```
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;
}
```
这样就成功创建了一个链表,其中头结点的值为0,其余结点的值为1~6。
接下来是如何实现增加、删除、查找、移动、显示结点的基本功能的方法:
1. 增加结点
在链表结尾加入一个结点的代码如下:
```
ListNode* node = new ListNode(val);
p->next = node;
p = node;
```
其中`val`是要加入结点的值,`p`是链表的最后一个结点。
2. 删除结点
在链表中删除一个结点的代码如下:
```
ListNode* prev = head;
ListNode* cur = head->next;
while(cur != NULL) {
if(cur->val == val) {
prev->next = cur->next;
delete cur;
break;
}
prev = cur;
cur = cur->next;
}
```
其中`val`是要删除的结点的值,`prev`是待删除结点的前一个结点,`cur`是待删除结点。
3. 查找结点
在链表中查找某个结点的代码如下:
```
ListNode* p = head->next;
while(p != NULL) {
if(p->val == val) {
return p;
}
p = p->next;
}
return NULL;
```
其中`val`是要查找的结点的值,如果找到就返回该结点,否则返回NULL。
4. 移动结点
在链表中移动某个结点的代码如下:
```
ListNode* prevX = head;
ListNode* curX = head->next;
while(curX != NULL) {
if(curX->val == x) {
break;
}
prevX = curX;
curX = curX->next;
}
ListNode* prevY = head;
ListNode* curY = head->next;
while(curY != NULL) {
if(curY->val == y) {
break;
}
prevY = curY;
curY = curY->next;
}
if(curX == NULL || curY == NULL) {
return;
}
prevX->next = curX->next;
prevY->next = curX;
curX->next = curY->next;
curY->next = curX;
```
其中`x`是要移动的结点的值,`y`是该结点要移动到的位置。
5. 显示结点
输出链表中所有结点的值的代码如下:
```
ListNode* p = head->next;
while(p != NULL) {
cout << p->val << " ";
p = p->next;
}
cout << endl;
```
这样就实现了对链表的基本操作。
相关推荐
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)