一单链表的实践 1)·建立一个包括头结点和 4个结点的如(5,4,2,1)的单链表,实现单链表建立的基本操作。“ 2)·将该单链表的所有元素显示出来。“ 3)在已建好的单链表中的指定位置 (i-3)插入一个结点3,实现单链表插 入的基本操作。“ 4在一个包括头结点和 5个结点的 (5,4,3,2,1)的单链表的指定位置 (如 i:2)删除一个结点,实现单链表删除的基本操作。“ 5)查找单链表中指定元素。“
时间: 2023-05-12 09:04:17 浏览: 129
单链表的建立及一些简单操作
1) 建立单链表的基本操作如下:
```c++
#include <iostream>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* createList() {
ListNode *head = new ListNode(0);
ListNode *cur = head;
int arr[] = {5, 4, 2, 1};
int n = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < n; i++) {
ListNode *node = new ListNode(arr[i]);
cur->next = node;
cur = cur->next;
}
return head;
}
```
2) 显示单链表的所有元素的基本操作如下:
```c++
void printList(ListNode *head) {
ListNode *cur = head->next;
while (cur) {
cout << cur->val << " ";
cur = cur->next;
}
cout << endl;
}
```
3) 在指定位置插入结点的基本操作如下:
```c++
void insertNode(ListNode *head, int i, int val) {
ListNode *cur = head;
for (int j = 0; j < i - 1; j++) {
cur = cur->next;
}
ListNode *node = new ListNode(val);
node->next = cur->next;
cur->next = node;
}
```
4) 删除指定位置结点的基本操作如下:
```c++
void deleteNode(ListNode *head, int i) {
ListNode *cur = head;
for (int j = 0; j < i - 1; j++) {
cur = cur->next;
}
ListNode *tmp = cur->next;
cur->next = tmp->next;
delete tmp;
}
```
5) 查找指定元素的基本操作如下:
```c++
ListNode* findNode(ListNode *head, int val) {
ListNode *cur = head->next;
while (cur) {
if (cur->val == val) {
return cur;
}
cur = cur->next;
}
return NULL;
}
```
以上就是单链表的基本操作,可以根据需要进行调用。
阅读全文