下面是编程之家 jb51.cc 通过网络收集整理的代码片段。
编程之家小编现在分享给大家,也给大家做个参考。
#include <iostream> #include <assert.h> using namespace std; struct SchoolNo { int no; friend bool operator == (const SchoolNo &school1,const SchoolNo &school2) { return (school1.no==school2.no); } friend ostream & operator <<(ostream &_O,const SchoolNo &school) { _O<<school.no; return _O; } friend bool operator < (const SchoolNo &school1,const SchoolNo &school2) { return school1.no<school2.no; } friend bool operator > (const SchoolNo &school1,const SchoolNo &school2) { return school1.no>school2.no; } friend bool operator <= (const SchoolNo &school1,const SchoolNo &school2) { return school1.no<=school2.no; } friend bool operator >= (const SchoolNo &school1,const SchoolNo &school2) { return school1.no>=school2.no; } friend bool operator != (const SchoolNo &school1,const SchoolNo &school2) { return school1.no!=school2.no; } }; struct Information { friend ostream & operator<<(ostream &_O,const Information &_I) { _O<<"\t"<<_I.age<<"\t"<<_I.name<<endl; return _O; } int age; char name[13]; }; template<typename K,typename E> class SortedChain; template<typename K,typename E> class ChainNode { friend class SortedChain<K,E>; public: ChainNode():next(NULL){} ChainNode(K k,E e):key(k),data(e),next(NULL){} friend ostream &operator<<(ostream &_O,const ChainNode<K,E> &node) { _O<<node.key<<node.data; return _O; } private: E data; K key; ChainNode *next; }; template<typename K,typename E> class SortedChain { public: SortedChain() { first = new ChainNode<K,E>(); assert(first!=NULL); } ~SortedChain() { delete []first; first=NULL; } public: ChainNode<K,E> &Search(const K key)const//搜索。 { ChainNode<K,E> *p = first; while(p!=NULL) { if(p->key==key) break; p=p->next; } return *p; } void Insert(const K key,E &e) { ChainNode<K,E> *node = new ChainNode<K,E>(); node->data=e; node->key=key; node->next=NULL; ChainNode<K,E> *p = first; while(p->next!=NULL&& p->next->key<key)//重载 { p=p->next; } node->next = p->next; p->next=node; } friend ostream & operator<<(ostream &_O,const SortedChain<K,E> &node) { _O<<node.key; return _O; } void view() { ChainNode<K,E> *p = first; cout<<"学号"<<"\t"<<"年纪"<<"\t"<<"名字"<<endl; while(p->next!=NULL) { cout <<p->next->key<<p->next->data ; p=p->next; } } bool Remove(const K key,E &e) //删除。 { ChainNode<K,E> *p = first; while(p->next!=NULL && p->next->key!=key) { p = p->next; } ChainNode<K,E> *q = p->next; p->next = q->next; delete q; } ChainNode<K,E> *Begin()const //定位第一个。 { return (first->next); } ChainNode<K,E> &Next(ChainNode<K,E> *current)const//定位下一个。 { return *(current->next); } private: ChainNode<K,E> *first; }; int main() { SortedChain<SchoolNo,Information> a; Information _I1={100,"感动天"}; Information _I2={10,"赶上村"}; Information _I3={44,"震需要"}; SchoolNo _No1={3}; SchoolNo _No2={1}; SchoolNo _No3={2}; a.Insert(_No1,_I1); a.Insert(_No2,_I2); a.Insert(_No3,_I3); a.view(); a.Remove(_No2,_I2); a.view(); return 0; }
以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。