其中这些代码是最基础需要掌握的部分
这篇博客的代码部分经过测试,如果你遇到代码的问题,可以联系我:
代码仓库地址
一. 线性表 1. 逆置顺序表所有元素算法思想:第一个元素和最后一个元素对调,第二个元素和倒数第二个元素对调,……,依此类推。
#include using namespace std;/**using c++11 */void PrintVector(const vector &vet){for (auto &val : vet){cout next;delete cur;cur = next;}else{prev = cur;cur = next;}}// 验证第一个节点if (list->val == val){ListNode *head = list->next;delete list;list = head;}// 打印测试while (list != nullptr){cout next;delete head;return next;}// 递归解法ListNode *reverse(ListNode *head){if (head == nullptr || head->next == nullptr){return head;}ListNode *next = reverse(head->next);head->next->next = head;head->next = nullptr;return next;}// 非递归解法ListNode *reverse_display(ListNode *head){// 对头节点进行头插法ListNode *newHead = head;ListNode *node = head->next;newHead->next = nullptr;while (node != nullptr){ListNode *next = node->next;node->next = newHead;newHead = node;node = next;}return newHead;}void PrintList(ListNode *list){while (list != nullptr){cout next;}tail = tail->next;}tail->next = left == nullptr ? right : left;return head->next;}int main(int argc, char const *argv[]){ListNode *left = InitList({1, 2, 3, 4, 5});ListNode *right = InitList({2, 3, 4, 8});PrintList(MergeList(left, right));return 0;} 二. 树 1. 建立二叉树(从数组获取数据,递归+非递归)注意,这里使用了更直观的打印二叉树的方式,在考研中不需要掌握。所以这里会把二叉树打印结果截图放进来
非递归创建树的思路是:先创建节点,将节点保存起来,最后修改指针即可
#include #include using namespace std;struct TreeNode{int val;TreeNode *left;TreeNode *right;TreeNode(int _val) : val(_val), left(nullptr), right(nullptr) {}};// 更好的二叉树打印(考研不需要掌握,为了打印树更直观),打印思路:https://blog.csdn.net/dodamce/article/details/130925799?spm=1001.2014.3001.5501struct PrintCur{int deep(TreeNode *root){if (root == nullptr){return 0;}int left = deep(root->left);int right = deep(root->right);return max(left, right) + 1;}void dfs(TreeNode *root, vector &ret, int row, int col, const int &deep){if (root == nullptr){return;}ret[row][col] = to_string(root->val);if (root->left != nullptr)dfs(root->left, ret, row + 1, col - (1 right, ret, row + 1, col + (1 right);if (parent->left == root){parent->left = nullptr;}else{parent->right = nullptr;}return node;}}nodes.push(root);parent = root;root = root->left;}parent = nodes.top();nodes.pop();root = parent->right;}return root;}int main(int argc, char const *argv[]){BTree tree({1, 2, 3, 4, 5, 6, 7});tree.PrintTree();PrintCur print;print.printTree(DeleteSubtree(tree.root, 3));cout