告别脚手架恐惧症:用Umi Max + Ant Design Pro 5分钟搞定企业级React后台
2026/5/6 14:41:35
链表结点结构体的数据域包含:姓名、英雄稀有度。
链表输入以下数据:
斯派克 S
阿方 A
斯图 B
该链表应该实现的功能:
// 英雄节点类 class ListNode { public: string name; char rarity; ListNode* next; ListNode(string name = "", char r = {}) : name(name), rarity(r), next(nullptr) {} };包含头节点, 以及各种功能函数
class heroList { public: ListNode* head; public: // 构造函数 heroList() : head(nullptr) {} }// 插入节点 void insertAtTail(string name, char rarity) { ListNode* node = new ListNode(name, rarity); if (head == nullptr) { head = node; } else { ListNode* curr = head; while (curr->next != nullptr) { curr = curr->next; } curr->next = node; } }// 通过姓名查看熟练度 void search(string name) { ListNode* curr = head; while (curr != nullptr) { if (curr->name == name) { cout << name << "的熟练度为" << curr->rarity << endl; return; } curr = curr->next; } cout << "没有找到" << endl; }// 删除英雄 void remove(string name) { ListNode* dummy = new ListNode(); dummy->next = head; ListNode* curr = dummy; while (curr->next != nullptr) { if (curr->next->name == name) { ListNode* temp = curr->next; curr->next = temp->next; delete temp; break; } curr = curr->next; } head = dummy->next; delete dummy; }// 通过姓名修改稀有度 void modify(string name, char rarity) { ListNode* curr = head; while (curr != nullptr) { if (curr->name == name) { cout << "已将" << name << "的熟练度改为" << rarity << endl; curr->rarity = rarity; return; } curr = curr->next; } cout << "没有找到" << endl; }// 将链表保存到文件中 void saveToFile(char* filename) { FILE* pf = fopen(filename, "w"); if (pf == nullptr) { cout << "文件打开失败\n" << endl; return; } ListNode* curr = head; while (curr != NULL) { fprintf(pf, "%s %c\n", curr->name, curr->rarity); curr = curr->next; } fclose(pf); pf = nullptr; cout << "数据已保存到文件" << endl; }// 从文件中读取数据并创建链表 ListNode* loadFromFile(char* filename) { FILE* pf = fopen(filename, "r"); if (pf == nullptr) { cout << "文件打开失败\n" << endl; return nullptr; } char name[100]; char rarity; ListNode* dummy = new ListNode(); ListNode* curr = dummy; while (fscanf(pf, "%s %c", name, &rarity) == 2) { // 创建新节点 ListNode* newNode = new ListNode(name, rarity); curr->next = newNode; curr = curr->next; } fclose(pf); cout << "数据已从文件中读取" << endl; ListNode* temp = dummy->next; delete dummy; return temp; }大小端指的是多字节数据在内存中存储的字节顺序。
现代电脑一般是小端存储
流是数据在程序和外部设备(如文件、终端、网络等)之间流动的抽象概念。
可以把流想象成一条"数据河流":
C语言文件操作:
class Solution { public: int rob(vector<int>& nums) { if (nums.empty()) { return 0; } int len = nums.size(); if (len == 1) { return nums[0]; } vector<int> dp(len, 0); dp[0] = nums[0]; dp[1] = max(nums[0], nums[1]); for (int i = 2; i < len; i++) { dp[i] = max(dp[i - 2] + nums[i], dp[i - 1]); } return dp[len - 1]; } };class Solution { public: // 合并两个升序链表 ListNode* mergeTwo(ListNode* list01, ListNode* list02) { if (list01 == nullptr) { return list02; } if (list02 == nullptr) { return list01; } ListNode* l1 = list01; ListNode* l2 = list02; ListNode* result = new ListNode(); ListNode* curr = result; while (l1 != nullptr && l2 != nullptr) { if (l1->val <= l2->val) { curr->next = l1; l1 = l1->next; } else if (l1->val > l2->val) { curr->next = l2; l2 = l2->next; } curr = curr->next; } if (l1 == nullptr) { curr->next =l2; } else { curr->next =l1; } return result->next; } ListNode* mergeKLists(vector<ListNode*>& lists) { int len = lists.size(); if (len == 1) { return lists[0]; } ListNode* result = nullptr; for (int i = 0; i < len; i++) { result = mergeTwo(result, lists[i]); } return result; } };给定一个字符串
s,请你找出其中不含有重复字符的最长子串 的长度。
class Solution { public: int lengthOfLongestSubstring(string s) { int curr = 0; int result = 0; char set[1000] = {0}; int left = 0; int len = s.size(); for (int i = 0; i < len; i++) { if (set[s[i]] == 0) { set[s[i]] = 1; curr++; } else { while (set[s[i]] == 1) { set[s[left++]] = 0; } } result = max(curr, result); } return result; } };