- 浏览: 768651 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
改了很久的bug
#ifndef LINKEDSET_H #define LINKEDSET_H #include<stdlib.h> #include<iostream> using namespace std; template<typename T> class SetNode{ public: T data; SetNode<T>* link; SetNode():link(NULL){ } SetNode(const T& t,SetNode<T> *next=NULL):data(t),link(next){ } }; template<typename T> class LinkedSet{ private: SetNode<T> *first,*last; public: LinkedSet(){first=last=new SetNode<T>();} LinkedSet(LinkedSet<T>& R); ~LinkedSet(){ makeEmpty(); delete first; } void makeEmpty(){ SetNode<T> *p = first->link; SetNode<T> *pre; while(p!=NULL){ pre = p; delete pre; p = p->link; } } bool addMember(const T& x); bool delMember(const T& x); LinkedSet<T>& operator=(LinkedSet<T>& R); LinkedSet<T>& operator+(LinkedSet<T>& R); LinkedSet<T>& operator*(LinkedSet<T>& R); LinkedSet<T>& operator-(LinkedSet<T>& R); bool Contains(const T& x); bool operator==(LinkedSet<T>& R); friend ostream& operator<<(ostream& out,LinkedSet<T>& R){ SetNode<T> *node = R.first->link; while(node!=NULL){ out << node->data << " "; node = node->link; } out << endl; return out; } bool Min(T& x); bool Max(T& x); }; template<typename T> LinkedSet<T>::LinkedSet(LinkedSet<T> &R) { SetNode<T> *src = R.first->link; first = last = new SetNode<T>; while(src!=NULL){ last->link = new SetNode<T>(src->data); src = src->link; last = last->link; } } template<typename T> bool LinkedSet<T>::Contains(const T &x) { SetNode<T>* temp = first->link; while(temp!=NULL&&temp->data<x) temp = temp->link; if(temp!=NULL&&temp->data==x) return true; return false; } template<typename T> bool LinkedSet<T>::addMember(const T &x) { SetNode<T> *pre,*node; node = first->link; pre = first; while(node!=NULL&&node->data<x){ pre = node; node = node->link; } if(node!=NULL&&node->data==x){ return false; }else{ SetNode<T>* s = new SetNode<T>(x); s->link = node; pre->link = s; if(node==NULL) last=s; } return true; } template<typename T> bool LinkedSet<T>::delMember(const T &x) { SetNode<T> *pre,*node; node = first->link; while(node!=NULL&&node->data!=x){ pre = node; node = node->link; } if(node==NULL)//没找到 return false; pre->link = node->link; if(node==last) last = pre; delete node; return true; } template<typename T> LinkedSet<T>& LinkedSet<T>::operator=(LinkedSet<T>& R) { SetNode<T> *p = R.first->link; SetNode<T> *node = first = new SetNode<T>; while(p!=NULL){ node->link = new SetNode<T>(p->data); p = p->link; node = node->link; } node->link = NULL; last = node; return *this; } /* 将集合this与集合R的并积,将计算结果放入temp中返回 */ template<typename T> LinkedSet<T>& LinkedSet<T>::operator+(LinkedSet<T>& R) { SetNode<T> *pa = first->link; SetNode<T> *pb = R.first->link; //LinkedSet<T> temp我之前这么写总是有问题在这个函数里是对的,然后跑出去的返回 //值就是脏数据,换成指针后好了,*,-也是这种情况,这是为什么呢?(平台g++) LinkedSet<T> *temp = new LinkedSet<T>; SetNode<T> *pc = temp->first; while(pa!=NULL&&pb!=NULL){ if(pa->data==pb->data){ pc->link = new SetNode<T>(pa->data); pa = pa->link; pb = pb->link; }else if(pa->data<pb->data){ pc->link = new SetNode<T>(pa->data); pa = pa->link; }else{ pc->link = new SetNode<T>(pb->data); pb = pb->link; } pc = pc->link; } while(pa!=NULL){ pc->link = new SetNode<T>(pa->data); pc = pc->link; pa = pa->link; } while(pb!=NULL){ pc->link = new SetNode<T>(pb->data); pc = pc->link; pb = pb->link; } pc->link = NULL; temp->last = pc; return *temp; } template<typename T> LinkedSet<T>& LinkedSet<T>::operator*(LinkedSet<T>& R) { SetNode<T> *pa = first->link; SetNode<T> *pb = R.first->link; LinkedSet<T> *temp = new LinkedSet<T>; SetNode<T> *pc = temp->first; while(pa!=NULL&&pb!=NULL){ if(pa->data==pb->data){ pc->link = new SetNode<T>(pa->data); pa = pa->link; pb = pb->link; pc = pc->link; }else{ if(pa->data<pb->data){ pa = pa->link; }else{ pb = pb->link; } } } temp->last = pc; pc->link = NULL; return *temp; } template<typename T> LinkedSet<T>& LinkedSet<T>::operator-(LinkedSet<T>& R) { SetNode<T> *pa = first->link; SetNode<T> *pb = R.first->link; LinkedSet<T> *temp = new LinkedSet<T>; SetNode<T> *pc = temp->first; while(pa!=NULL&&pb!=NULL){ if(pa->data==pb->data){ pb = pb->link; pa = pa->link; }else if(pa->data<pb->data){ pc->link = new SetNode<T>(pa->data); pa = pa->link; pc = pc->link; }else{ pb = pb->link; } } while(pa!=NULL){ pc->link = new SetNode<T>(pa->data); pa = pa->link; pc = pc->link; } pc->link = NULL; temp->last = pc; return *temp; } template<typename T> bool LinkedSet<T>::operator==(LinkedSet<T>& R) { SetNode<T> *pa = first->link; SetNode<T> *pb = R.first->link; bool equal = true; while(pa!=NULL&&pb!=NULL){ if(pa->data!=pb->data){ equal = false; break; } pa = pa->link; pb = pb->link; } if(pa!=NULL||pa!=NULL){ equal = false; } return equal; } #endif // LINKEDSET_H
#include"linkedSet.h" #include<iostream> using namespace std; int main() { LinkedSet<int> ls1,ls2; for(int i=0;i<10;i++){ ls1.addMember(i); if(i%2==0) ls2.addMember(i); } LinkedSet<int> ls3=ls1+ls2; cout << ls3; ls3 = ls1*ls2; cout << ls3; ls3 = ls1-ls2; cout << ls3; } 0 1 2 3 4 5 6 7 8 9 0 2 4 6 8 1 3 5 7 9
发表评论
-
时间复杂度推导
2012-06-05 22:57 9831.用常数1取代运行时间中的所有加法常数 2.在修改后的运行次 ... -
数据结构概论2
2012-06-04 22:19 809数据元素:组成数据的,有一定意义的基本单位,在计算机中通常作为 ... -
排序概念
2011-06-24 14:51 788数据表:待排序数据元素的有很集合 排序码:通常数据元素有多个 ... -
图的基本概念
2011-06-20 16:18 749完全图:n个顶点,n*(n-1)/2个边的无向图,就是无向完全 ... -
红黑树
2011-06-16 14:29 516红黑树: 1.根结点和所有的叶结点都是黑色 2.从根结点到叶结 ... -
链表反转
2011-06-12 18:03 1101template<typename T> v ... -
散列表(哈希表)
2011-06-09 09:55 1081散列表(hash table):是表示集合和字典的另一种有效方 ... -
跳 表
2011-06-08 11:12 804#ifndef SKIPLIST_H #define S ... -
字 典
2011-06-08 10:06 925字典:以集合为基础,并支持支持Member,Insert和Re ... -
bitset
2011-06-06 12:27 885bitSet.h #ifndef BITSET_H #d ... -
Huffman树
2011-06-02 11:06 917Huffman树,又称最优二叉树,是一类加权路径长度最短的二叉 ... -
堆
2011-06-02 09:19 952在优先级队列的各种实现中,堆是最高效的一种数据结构 关键码: ... -
森 林
2011-06-01 11:09 602森林与二叉树互转,主要是子结点转左子树,兄弟结点转右子树 深 ... -
二叉树的链式实现
2011-05-31 11:24 1264binaryTree.h #ifndef LINKEDBI ... -
二叉树基本概念
2011-05-30 10:05 844一棵二叉树的结点的一个有限集合:该集合或者为空,或者是由一个根 ... -
树基本概念
2011-05-30 09:28 894结点(node):包含数据项及指向其他结点的分支。 结点的度( ... -
广义表
2011-05-27 10:57 936广义表的定义是递归的,因为在表的描述中又用到了表,允许表中有表 ... -
矩阵相关
2011-05-26 10:22 932矩阵:是一个具有m行n列的二维数组。 上三角矩阵:只存储对角 ... -
优先级队列
2011-05-21 11:24 603PQueue.h #ifndef PQUEUE_H #d ... -
链式队列
2011-05-20 12:05 829LinkedQueue.h #ifndef LINKEDQ ...
相关推荐
LinkedHashSet<String> linkedSet = new LinkedHashSet(); linkedSet.add("Element3"); linkedSet.add("Element4"); for (String element : linkedSet) { System.out.println(element); // 按插入顺序输出 } ``` 8...
- **`HashSet`与`ArraySet`/`LinkedSet`**:`HashSet`是基于哈希表实现的,而`ArraySet`通常是指数组实现的集合,`LinkedSet`则是基于链表实现的有序集合。`HashSet`提供了非常高效的增删查操作,但不保证元素的插入...
- `LinkedSet`: 保留元素的添加顺序,同时不允许重复元素。 以上就是基于所提供的信息所整理出的HQL增删改查相关的核心知识点。希望这些内容能帮助您更好地理解和应用Hibernate框架中的HQL查询语言。
组 Set是使用LinkedHashMap在Go(Golang)中简单的Set数据结构实现。 该库允许您获取一组int64或string而没有重复的项目。 用法 package main import ( "fmt" ... duplicatedInt64 := [] int64 { 1 , 1 , 2 , 2 , 3 ...
LinkedHashSet<String> linkedSet = new LinkedHashSet(listWithDuplicateElements); ArrayList<String> listWithoutDuplicateElements = new ArrayList(linkedSet); // 打印删除重复元素后的ArrayList System....
8. LinkedSet.class:可能是一个自定义的链表集合类,用于存储和操作数据。 9. Cartesian.class:可能涉及到笛卡尔积运算,用于生成问题的解决方案空间。 10. hosts:这个文件可能包含已知主机的列表或配置信息。 ...