c语言之从键盘输入一个大链表结构定义、初始化,在链表头部插入节点(用C++程序完成上述操作)
时间: 2024-10-23 07:20:02 浏览: 30
数据结构:图解链表,链表的插入和删除(c语言版)
5星 · 资源好评率100%
在C++中,你可以使用结构体(struct)来定义链表节点,并通过动态内存分配创建链表。首先,我们需要定义一个`Node`结构,包含数据域和指向下一个节点的指针:
```cpp
#include <iostream>
// 链表节点定义
struct Node {
int data;
Node* next; // 指向下一个节点的指针
};
```
然后,我们可以定义函数来获取用户输入并初始化链表:
```cpp
void initializeList(Node** head) {
int input;
std::cout << "请输入链表元素,输入-1结束:" << std::endl;
*head = nullptr; // 初始化链表头指针
while (std::cin >> input && input != -1) { // 当输入不是-1时继续循环
Node* newNode = new Node(); // 创建新节点
newNode->data = input;
newNode->next = *head; // 将新节点链接到当前链表头
*head = newNode; // 更新链表头
}
}
```
接着,我们添加一个函数来在链表头部插入节点:
```cpp
void insertAtHead(Node** head, int value) {
Node* newNode = new Node();
newNode->data = value;
newNode->next = *head;
*head = newNode; // 新节点成为新的头节点
}
// 主函数演示如何使用
int main() {
Node* head = nullptr;
initializeList(&head); // 初始化链表
if (head) {
// 插入一个新节点到头部
insertAtHead(&head, 0);
std::cout << "插入0后链表:";
printList(head);
}
return 0;
}
// 打印链表
void printList(Node* node) {
while (node) {
std::cout << node->data << " -> ";
node = node->next;
}
std::cout << "NULL" << std::endl;
}
```
在这个示例中,`initializeList`用于接收用户输入构造链表,`insertAtHead`用于在链表头部插入指定值,`printList`用于打印链表内容。
阅读全文