【模板】链表

#include <bits/stdc++.h>
using namespace std;
class dc_CHAIN {
	private : 
		struct NODE {
			int val;
			NODE *pre;
			NODE *suc;
		};
		void conduct_insert(int v,NODE *p) {
			NODE *node = new NODE;
			node->val = v;
			if(p == NULL) {
				p = node;
				node->pre = node;
				node->suc = node;
			} else {
				node->pre = p;
				node->suc = p->suc;
				p->suc->pre = node;
				p->suc = node;
			}
		}
		void conduct_delete(NODE *p) {
			p->pre->suc = p->suc;
			p->suc->pre = p->pre;
			NODE *tmp = p;
			p = p->suc;
			delete tmp;
		}
	public : 
		void Insert(int v,NODE *p) {
			conduct_insert(v,p);
		}
		void Delete(NODE *p) {
			conduct_delete(p);
		}
		bool find_back(int v,NODE *p) {
			NODE *tmp = p;
			while(p->val != v&&p != tmp) p = p->suc;
			if(tmp == p&&p->val != v) 
				return false;
			return true;
		}
		void find_front(int v,NODE *p) {
			NODE *tmp = p;
			while(p->val != v&&p != tmp) p = p->pre;
			if(tmp == p&&p->val != v) 
				return false;
			return true;
		}
} chain;
signed main() {
}
#include <bits/stdc++.h>
using namespace std;
class SkipList {
	private : 
		template<class K,class E>
		struct NODE {
			pair<K,E> element;
			NODE<K,E>** next;
			skipnode(const pair<K,E>& thepair,int levelsize) {
				element = thepair;
				next = new NODE<K,E>*[levelsize];
			}
		};
		int currentlevel;
		int maxlevel;
		int size;
		double cutoff;
		K maxkey;
		NODE<K,E>* headernode;
		NODE<K,E>* tailnode;
		NODE<K,E>** lastnodearray;
		int randomlevel() {
			int level = 0;
			while(rand() < cutoff) ++level;
			return min(maxlevel,level);
		}
		NODE<K,E>* search(const K& thekey) const {
			NODE<K,E>* beforenode = headernode;
			for(int i = currentlevel;i >= 0;--i) {
				while(beforenode->next[i]->element.first < thekey) {
					beforenode = beforenode->next[i];
				}
				lastnodearray[i] = beforenode;
			}
			return beforenode->next[0];
		}
	public : 
		SkipList(K themaxkey, int maxpairs,double prob) {
			cutoff = prob*RAND_MAX;
			maxlevel = (int)ceil(logf((double)maxpairs)/logf(1.prob))-1;
			currentlevel = 0;
			size = 0;
			maxkey = themaxkey;
			pair<K,E> tailpair;
			
		}
};
signed main() {
	
}

@bikuhiku

posted @ 2022-06-05 21:04  bikuhiku  阅读(2)  评论(0编辑  收藏  举报