用c++实现链表Insert函数
时间: 2023-10-13 20:05:28 浏览: 41
struct Node {
int data;
struct Node *next;
};
void insert(struct Node **head_ref, int new_data) {
struct Node *new_node = (struct Node*)malloc(sizeof(struct Node));
new_node->data = new_data;
new_node->next = (*head_ref);
(*head_ref) = new_node;
}
相关问题
用c++创建链表,并用递归函数实现链表反序
在C++中创建链表可以通过定义一个节点结构体来实现。每个节点包含一个数据成员和一个指向下一个节点的指针。
下面是一个示例代码,展示了如何创建链表并使用递归函数实现链表反序:
```cpp
#include <iostream>
// 定义链表节点结构体
struct Node {
int data;
Node* next;
};
// 在链表末尾插入节点
void insertNode(Node*& head, int data) {
Node* newNode = new Node;
newNode->data = data;
newNode->next = nullptr;
if (head == nullptr) {
head = newNode;
} else {
Node* temp = head;
while (temp->next != nullptr) {
temp = temp->next;
}
temp->next = newNode;
}
}
// 递归函数实现链表反序
Node* reverseList(Node* curr, Node* prev = nullptr) {
if (curr == nullptr) {
return prev;
}
Node* nextNode = curr->next;
curr->next = prev;
return reverseList(nextNode, curr);
}
// 打印链表
void printList(Node* head) {
Node* temp = head;
while (temp != nullptr) {
std::cout << temp->data << " ";
temp = temp->next;
}
std::cout << std::endl;
}
int main() {
Node* head = nullptr;
// 插入节点
insertNode(head, 1);
insertNode(head, 2);
insertNode(head, 3);
insertNode(head, 4);
insertNode(head, 5);
std::cout << "原始链表:";
printList(head);
// 反序链表
head = reverseList(head);
std::cout << "反序链表:";
printList(head);
return 0;
}
```
运行以上代码,输出结果为:
```
原始链表:1 2 3 4 5
反序链表:5 4 3 2 1
```
c++实现链表输入文件
下面是一个示例代码,可以实现从文件中读入数据并创建链表:
```cpp
#include <iostream>
#include <fstream>
using namespace std;
struct Node {
int data;
Node* next;
};
Node* head = NULL;
void insert(int val) {
Node* newNode = new Node();
newNode->data = val;
newNode->next = NULL;
if (head == NULL) {
head = newNode;
}
else {
Node* curr = head;
while (curr->next != NULL) {
curr = curr->next;
}
curr->next = newNode;
}
}
void printList() {
Node* curr = head;
while (curr != NULL) {
cout << curr->data << " ";
curr = curr->next;
}
cout << endl;
}
int main() {
ifstream inFile("data.txt");
int val;
while (inFile >> val) {
insert(val);
}
inFile.close();
printList();
return 0;
}
```
在上面的代码中,我们首先定义了一个链表结构体 `Node`,其中包括一个 `data` 成员表示节点的数据,以及一个 `next` 指针指向下一个节点。然后我们定义了一个全局变量 `head`,表示链表的头节点。
接下来,我们定义了一个 `insert` 函数,用于向链表中插入数据。该函数首先创建一个新的节点,并将给定的数据值赋给该节点的 `data` 成员,然后将新节点添加到链表的末尾。
我们还定义了一个 `printList` 函数,用于打印链表中所有节点的数据值。
在 `main` 函数中,我们首先打开一个名为 `data.txt` 的文件,然后从文件中读取数据并将其插入到链表中。最后,我们调用 `printList` 函数打印链表中的所有数据。
需要注意的是,这里假设数据文件中每一行只包含一个整数。如果数据文件中的数据格式不同,需要根据实际情况进行修改。