用C++使用前插法创建单链表,从终端输入元素,并查找指定元素所在的位置
时间: 2024-09-28 18:12:49 浏览: 4
在C++中,我们可以使用前插法(也叫插入排序)构建一个单链表,同时处理用户输入并查找特定元素的位置。首先,我们需要定义一个简单的链表节点结构:
```cpp
struct Node {
int data;
Node* next;
};
```
然后,可以编写函数来插入新元素并保持链表的排序:
```cpp
Node* insert(Node*& head, int value) {
Node* newNode = new Node();
newNode->data = value;
if (head == nullptr || head->data > value) {
newNode->next = head;
head = newNode;
} else {
Node* current = head;
while (current->next != nullptr && current->next->data < value) {
current = current->next;
}
newNode->next = current->next;
current->next = newNode;
}
return head;
}
```
接下来,我们创建一个函数用于从终端输入元素并插入到链表中:
```cpp
void inputAndInsert(Node*& head) {
std::cin >> head;
if (head == nullptr) return;
int input;
while (std::cin >> input) {
insert(head, input);
}
}
```
查找指定元素位置的函数可以这样实现:
```cpp
int searchPosition(Node* head, int target) {
Node* current = head;
int position = 0;
while (current != nullptr) {
if (current->data == target) {
return position; // 返回元素的索引
}
current = current->next;
position++;
}
return -1; // 如果未找到目标元素,返回 -1 或者相应提示
}
```
为了测试这些函数,你可以这样使用它们:
```cpp
int main() {
Node* listHead = nullptr;
inputAndInsert(listHead);
int targetElement;
std::cout << "Enter a target element to find its position: ";
std::cin >> targetElement;
int position = searchPosition(listHead, targetElement);
if (position != -1)
std::cout << "The target element is at position " << position << std::endl;
else
std::cout << "Element not found in the list." << std::endl;
return 0;
}
```