#include #include #include #include using namespace std; struct Node{ int val; Node* next; Node(int v,Node* n):val(v),next(n){}; Node(int v):Node(v,nullptr){}; }; class List{ public: List() { head = new Node(0); tail = head; len=0; } void addItem(int v) { ++len; if(tail==head) { Node* tmp=new Node(v); head->next=tmp; tail=head->next; return; } Node* tmp = new Node(v); tail->next = tmp; tail = tail->next; } void Traverse() { Node* scan=head->next; while(scan) { cout<val<<" "; scan=scan->next; } cout<next; Node* bfMax = scan; while(tmp->next) { if(maxNode->val < tmp->next->val) { bfMax = tmp; maxNode = tmp->next; } tmp=tmp->next; } //cout<<"maxnode"<val<next = maxNode->next; maxNode->next = head->next; head->next= maxNode; //处理 if(i==0) scan=maxNode; } } void Reverse() { if(len<2) return; Node *scan=head->next->next; head->next->next=nullptr; while(scan) { Node* tmp=scan->next; scan->next=head->next; head->next=scan; scan=tmp; } } void DelSame() { map s;//n-upNum Node* scan = head->next; while(scan) { if(s[scan->val]) s[scan->val]++; else s[scan->val]=1; scan=scan->next; } scan=head->next; Node* bf=head; while(scan) { if(s[scan->val]==1) { scan=scan->next; bf=bf->next; continue; } len--; s[scan->val]--; if(scan->next){ Node* tmp=scan; scan=scan->next; bf->next=scan; free(tmp); } else{ bf->next=nullptr; free(scan); scan=nullptr; } } } private: Node* head; Node* tail; int len; }; int main() { srand(time(0)); List l; for(int i=10;i>0;i--) { l.addItem(rand()%10); } l.SelectSort(); l.Traverse(); l.Reverse(); l.Traverse(); l.DelSame(); l.Traverse(); }
#include #include #include #include using namespace std; struct Node { int val; Node* left; Node* right; Node(int n):val(n),left(nullptr),right(nullptr){}; }; class BinaryTree{ public: BinaryTree() { root=nullptr; } void initTree() { } void addItem(int n) { if(root==nullptr) { Node* tmp = new Node(n); root = tmp; } else addItem(root,n); } void PreOrder() { PreOrderHelper(root); cout< visit; stack q; q.push(root); visit.push(false); while(!q.empty()) { Node* scan=q.top();q.pop(); bool v=visit.top();visit.pop(); if(scan==nullptr) continue; if(!v) { q.push(scan);visit.push(true); q.push(scan->right);visit.push(false); q.push(scan->left);visit.push(false); } else{ cout<val<<" "; } } cout<val==n) { DelTree(scan); root=nullptr; return; } while(scan!=nullptr) { if(scan->left&&scan->left->val==n) { DelTree(scan->left); scan->left=nullptr; PreOrder(); return; } if(scan->right&&scan->right->val==n) { DelTree(scan->right); scan->right=nullptr; PreOrder(); return; } if(scan->valright; } else if(scan->val>n) { scan=scan->left; } } cout<root->val) { if(root->right) addItem(root->right,n); else { root->right = new Node(n); } } if(nval) { if(root->left) addItem(root->left,n); else { root->left = new Node(n); } } } void PreOrderHelper(Node* root) { if(root==nullptr) return; if(root) cout<val<<' '; if(root->left) PreOrderHelper(root->left); if(root->right) PreOrderHelper(root->right); } void DelTree(Node *root) { if(root==nullptr) return; if(root->left) { DelTree(root->left); } if(root->right) { DelTree(root->right); } if(root->left==nullptr&&root->right==nullptr) { free(root); root=nullptr; } } void DelTree2(Node *&root) { if(root==nullptr) return; if(root->left) DelTree(root->left); if(root->right) DelTree(root->right); if(root->left==nullptr&&root->right==nullptr) free(root); root=nullptr; } }; int main() { fstream f("Test3.txt",ios::in); int n; f>>n; BinaryTree t; for(int i=0;i>x; t.addItem(x); } f.close(); t.PreOrder(); cout<
#include #include #include #include using namespace std; class Graph{ public: int vNum; int eNum; int **edge; bool *visit; map name2v; map v2name; Graph() { fstream f; f.open("Test2.txt",ios::in); f>>vNum; edge=new int*[vNum]; for(int i=0;i>x; v2name[i]=x; name2v[x]=i; } f>>eNum; for(int i=0;i>x>>y>>val; edge[name2v[x]][name2v[y]]=val; edge[name2v[y]][name2v[x]]=val; } } void Print() { for(int i=0;i=0;i--) { cout< q; q.push(i); while(!q.empty()) { int tmp=q.front();q.pop(); if(!visit[tmp]) cout<