
数据结构和算法分析
以Java为主要代码
繁星伴晚安
热爱诗和代码
展开
-
【C++】二叉搜索树插入、删除、寻找
#include<iostream>using namespace std;struct BinTreeNode{ int data; BinTreeNode* leftChild, * rightChild; BinTreeNode(int c, BinTreeNode* l = NULL, BinTreeNode* r = NULL) :data(c), leftChild(l), rightChild(r) {}};BinTreeNode* insert(BinT原创 2021-03-07 18:51:16 · 131 阅读 · 0 评论 -
【C++】STL详解
一、动态数组vector二、栈容器Stack三、队列容器queue四、优先对列容器priority queue五、双端队列容器deque六、双向链表容器list七、集合容器set八、对组容器pair九、映射容器map十、字符串string十一、sort函数...原创 2021-02-15 10:37:51 · 133 阅读 · 0 评论 -
【C++】删除节点
1、已知当前节点P2,删除该节点。#include<iostream>using namespace std;struct ListNode { char val; ListNode* next; ListNode(){} ListNode(char x) : val(x), next(NULL) {} };void print(ListNode* pHead) { ListNode* p = pHead->next; w原创 2021-02-13 17:42:45 · 2447 阅读 · 2 评论 -
【C++】线性表伪算法
#pragma onceclass list{private: int arrayLength;//最大长度 int listSize;//实际长度 int* num;//动态数组 void checkSize(int index)const;public: list(int initialCapacity = 10); list(const list&); ~list(); bool empty()const;//判断是否为空 bool size()const;//返原创 2021-02-04 22:01:40 · 291 阅读 · 0 评论 -
【C++】链式二叉树的生成、遍历
实现以下树的代码#include<iostream>using namespace std;struct BTNode { char data; struct BTNode* pLchild; struct BTNode* pRchild; };BTNode* CreatBTree();void PreTraverseBTree(BTNode*);void InTraverseBTree(BTNode*);void PostTraverseBTree(BTNode*);原创 2021-02-03 16:34:10 · 135 阅读 · 0 评论 -
【C++】树
树详解满二叉树与完全二叉树的区别及判断二叉树的实现(数组形式)原创 2021-02-02 11:28:13 · 847 阅读 · 1 评论 -
【C++】队列实现
循环队列front :指向队首元素的索引rear:指向队尾元素的下一个索引入队:出队:empty:原创 2021-01-30 17:36:53 · 179 阅读 · 0 评论 -
【C++】linkedStack类的实现
#pragma once#include"chainNode.h"#include<iostream>using namespace std;template<class T>class linkedStack{private: chainNode<T>* stackTop;//栈顶指针 int stackSize; //栈中元素个数public: linkedStack(int initialCapacity = 10) { stackTo原创 2021-01-30 10:54:08 · 293 阅读 · 0 评论 -
【c++】栈实现
添加元素:#include<iostream>using namespace std;typedef struct Node { int data; struct Node* pNext;}NODE,*PNODE;typedef struct Stack { PNODE pTop; PNODE pBottom;}STACK,*PSTACK;void init(PSTACK);//初始化bool empty(PSTACK);void push(PSTACK,int);..原创 2021-01-29 18:06:50 · 104 阅读 · 0 评论 -
【C++】chain类的实现
chainNode.h#pragma oncetemplate<class T>struct chainNode { T element; chainNode<T>* next; chainNode() {} chainNode(const T& element) { this->element = element; } chainNode(const T& element, chainNode<T>* next) { th原创 2021-01-29 15:32:45 · 1030 阅读 · 0 评论 -
【C++】链表实现
单链表、头指针、头结点、首元节点#include<iostream>using namespace std;typedef struct Node { int element; Node * next;}*PNODE;PNODE creat_list();void traverse_list(PNODE pHead);int main() { PNODE pHead = creat_list(); traverse_list(pHead); return 0;}原创 2021-01-28 16:09:41 · 888 阅读 · 0 评论 -
【C++】chainNode结构体的实现
#include<iostream>using namespace std;struct chainNode { int element; chainNode * next;};int main() { struct chainNode p0; p0.element = 11; struct chainNode p1; p1.element = 13; p0.next = &p1; struct chainNode p2; p2.element = 15;原创 2021-01-28 10:29:04 · 397 阅读 · 0 评论 -
【C++】vectorList类的实现
**vectorList.h : **#pragma once#include<vector>#include<iostream>using namespace std;template<class T>class vectorList{protected: void checkIndex(int theIndex) const; vector<T>* element;//存储线性表元素的向量public: vectorList(int原创 2021-01-26 21:45:10 · 228 阅读 · 0 评论 -
【C++】arrayList类的实现
lineartList.h :#pragma oncetemplate<class T>class lineartList{public: virtual ~lineartList() {}; virtual bool empty() const = 0; // 判断线性表是否为空 virtual int size() const = 0; // 返回线性表的长度 virtual T& get(int theIndex) const = 0; //返回索引为t原创 2021-01-26 11:22:32 · 2157 阅读 · 0 评论 -
【c++】连续存储数组
#include <iostream>using namespace std;struct Array{ int* pBase; //存储的是数组第一个元素的地址 int len; //数组所能容纳的最大元素个数 int cnt; //当前数组的有效元素个数};void init(struct Array* pArr,int len);bool append(struct Array* pArr,int val);bool insert(struct Array* pArr原创 2021-01-25 12:03:02 · 923 阅读 · 0 评论 -
【冒泡排序】and【选择排序】
冒泡排序package com.itheima;import java.util.*;public class Main { public static void main(String[] args) { Integer nums[] = {4,5,6,3,2,1}; Bubble bubble = new Bubble(); bubble.sort(nums); System.out.println(Arrays.toStri原创 2021-01-22 17:08:18 · 65 阅读 · 0 评论 -
【算法】【时间复杂度】
描述 增长的数量级 说明 举例 常数级别 1 普通语句 将两个数相加 对数级别 logN 二分策略 二分查找 线性级别 N 循环 找出最大元素 线性对数级别 NlogN 分治思想 归并排序 平方级别 双层循环 检查所有元素对 立方级别 三层循环 检查所有三元组 指数级别 穷举查找 检查所有子集 ...原创 2021-01-21 18:29:19 · 208 阅读 · 0 评论