定义单链表的结点结构和各个成员函数定义,初始化线性表的数据为2,4,6,8。完成输出当前链表,在第一个位置插入值为5的结点,输出插入后链表,输出单链表长度,查找元素值,删除元素
时间: 2024-10-07 14:07:19 浏览: 34
在编程中,我们通常定义单链表节点(Node)的结构如下:
```c++
struct ListNode {
int data; // 节点存储的整数值
ListNode* next; // 指向下一个节点的指针
ListNode(int val) : data(val), next(nullptr) {} // 构造函数,初始化数据和next为nullptr
};
```
对于单链表的操作,我们可以编写以下几个关键的成员函数:
1. 初始化链表:
```c++
void initializeList(ListNode** head, const int values[], int size) {
*head = nullptr;
for (int i = 0; i < size; i++) {
if (*head == nullptr) {
*head = new ListNode(values[i]);
} else {
ListNode* temp = *head;
while (temp->next != nullptr) {
temp = temp->next;
}
temp->next = new ListNode(values[i]);
}
}
}
```
2. 输出链表:
```c++
void printList(ListNode* head) {
ListNode* temp = head;
while (temp != nullptr) {
cout << temp->data << " ";
temp = temp->next;
}
cout << endl;
}
```
3. 插入节点到链表头部:
```c++
void insertAtHead(ListNode** head, int value) {
ListNode* newNode = new ListNode(value);
newNode->next = *head;
*head = newNode;
}
```
4. 打印插入后的链表:
```c++
void printAfterInsertion(ListNode* head) {
printList(head);
}
```
5. 计算链表长度:
```c++
int lengthOfList(ListNode* head) {
int count = 0;
ListNode* temp = head;
while (temp != nullptr) {
count++;
temp = temp->next;
}
return count;
}
```
6. 查找元素并打印结果:
```c++
ListNode* findElement(ListNode* head, int target) {
ListNode* temp = head;
while (temp != nullptr && temp->data != target) {
temp = temp->next;
}
if (temp != nullptr) {
cout << "找到元素,值为:" << target << endl;
} else {
cout << "未找到该元素" << endl;
}
return temp;
}
```
7. 删除元素(这里假设我们要删除值为`value`的节点,并返回新的头节点):
```c++
ListNode* deleteElement(ListNode** head, int value) {
if (*head == nullptr || (*head)->data == value) {
ListNode* temp = *head;
*head = (*head)->next;
delete temp;
return *head;
}
ListNode* prev = nullptr;
ListNode* curr = *head;
while (curr != nullptr && curr->data != value) {
prev = curr;
curr = curr->next;
}
if (curr == nullptr) {
cout << "元素未找到,无法删除" << endl;
return *head;
}
prev->next = curr->next;
delete curr;
return *head;
}
```
现在你可以按照这个结构来创建链表并进行相应的操作。记得处理好内存管理哦!
阅读全文