输入若干个正整数(输入-1 为结束标志.建立一个单向链表,再输入一个数m,插人第i个结点后 面,并输出链表。
时间: 2024-03-08 22:47:56 浏览: 62
好的,我理解了您的问题。以下是实现这个功能的C++代码:
```cpp
#include <iostream>
using namespace std;
struct Node {
int val;
Node* next;
Node(int v) : val(v), next(nullptr) {}
};
Node* buildList() {
Node* head = nullptr;
Node* tail = nullptr;
int num;
while (true) {
cin >> num;
if (num == -1) {
break;
}
Node* node = new Node(num);
if (head == nullptr) {
head = node;
tail = node;
} else {
tail->next = node;
tail = node;
}
}
return head;
}
void insertNode(Node* head, int m, int i) {
Node* p = head;
int j = 1;
while (p != nullptr && j < i) {
p = p->next;
j++;
}
if (p == nullptr) {
cout << "Error: index out of range." << endl;
return;
}
Node* q = new Node(m);
q->next = p->next;
p->next = q;
}
void printList(Node* head) {
while (head != nullptr) {
cout << head->val << " -> ";
head = head->next;
}
cout << "null" << endl;
}
int main() {
Node* head = buildList();
int m, i;
cout << "Enter the value to be inserted (m): ";
cin >> m;
cout << "Enter the index to insert after (i): ";
cin >> i;
insertNode(head, m, i);
printList(head);
return 0;
}
```
上述代码中,`buildList`函数用于读入一系列正整数,并建立一个单向链表。`insertNode`函数用于在链表中插入一个新结点,其中参数`m`表示要插入的值,`i`表示要插入位置的下标。`printList`函数用于输出链表的值。
您可以根据需要修改输入输出方式。注意,本代码中没有进行内存管理,请勿直接用于生产环境。
阅读全文