设计一个链表类,它的构造函数能将数字字符串存入链表里
时间: 2023-08-04 11:22:13 浏览: 106
C++课程设计通讯录管理系统源代码宣贯.pdf
好的,以下是一个简单的链表类示例,它的构造函数可以将数字字符串存储到链表中:
```C++
#include <iostream>
#include <string>
using namespace std;
// 链表节点
struct ListNode {
int val;
ListNode* next;
ListNode(int x): val(x), next(NULL) {}
};
class LinkedList {
public:
// 构造函数
LinkedList(string nums) {
head = NULL;
ListNode* cur = NULL;
for (int i = 0; i < nums.length(); i++) {
if (isdigit(nums[i])) { // 判断是否是数字
int j = i;
while (j < nums.length() && isdigit(nums[j])) {
j++;
}
string num_str = nums.substr(i, j-i);
i = j - 1;
int num = stoi(num_str); // 将数字字符串转为整数
if (head == NULL) {
head = new ListNode(num);
cur = head;
} else {
cur->next = new ListNode(num);
cur = cur->next;
}
}
}
}
// 打印链表
void printList() {
ListNode* cur = head;
while (cur != NULL) {
cout << cur->val << " ";
cur = cur->next;
}
cout << endl;
}
private:
ListNode* head;
};
int main() {
string nums = "1 -> 2 -> 3 -> 4";
LinkedList l(nums);
l.printList();
return 0;
}
```
这个链表类的构造函数可以接受一个数字字符串作为输入,然后根据字符串中的数字创建一个链表。在构造函数中,我们首先初始化头节点为NULL,然后遍历数字字符串中的每个字符。如果该字符是数字,则继续向后遍历,直到不是数字为止。然后,我们将找到的数字字符串转换为整数,并将其插入到链表中。如果链表为空,则将其作为头节点,否则将其作为当前节点的下一个节点。最后,我们在构造函数中打印链表,以确保它已经正确创建。
阅读全文