有序线性表.doc_第1页
有序线性表.doc_第2页
有序线性表.doc_第3页
有序线性表.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

有序线性表/file:sortedChain.h#ifndef _SORTEDCHAIN_H_#define _SORTEDCHAIN_H_#include sortedChainNode.h#include exception.htemplate class SortedChainpublic:SortedChain()first = 0;SortedChain();bool IsEmpty() const return first = 0;int Length() const;bool Search(const K& k,E& e) const;SortedChain& Delete(const K& k,E& e);SortedChain& Insert(const E& e);SortedChain& DistinctInsert(const E& e);void Output(ostream& out) const;private:SortedChainNode *first;template SortedChain:SortedChain()SortedChainNode *next;while(first)next = first-link;delete first;first = next;template int SortedChain:Length() constSortedChainNode *current = first;int len = 0;while(current)len+;current = current-link;return len;template bool SortedChain:Search(const K& k,E& e) const/搜索与k匹配的元素,结果放入e /如果没有匹配的元素,则返回falseSortedChain *p = first;/搜索与k相匹配的元素for(;p & p-data link);/验证是否与k相匹配if(p & p-data = k)/与k相匹配e = p-data;return true;return false;/不存在相匹配的元素template SortedChain& SortedChain:Delete(const K& k,E& e)/删除与k相匹配的元素 /并将被删除的元素放入e /如果不存在匹配元素,则引发异常BadInputSortedChainNode *p = first,*tp = 0;/跟踪p/搜索与k相匹配的元素for(;p & p-data link);/验证是否与k相匹配if(p & p-data = k)/找到一个相匹配的元素e = p-data;/保存data域/从链表中删除p所指向的元素if(tp)tp-link = p-link;elsefirst = p-link;/p是链首节点delete p;return *this;throw BadInput();/不存在相匹配的元素template SortedChain& SortedChain:Insert(const E& e)/如果表中不存在关键值与e相同的元素,则插入e /否则引发异常BadInputSortedChainNode *p = first,*tp = 0;/跟踪p/移动tp以便把e插入到tp之后for(;p & p-data link);/若没有出现重复关键值,则产生一个关键值为e的新节点SortedChainNode *q = new SortedChainNode;q-data = e;/将新节点插入到tp之后q-link = p;if(tp)tp-link = q;elsefirst = q;return *this;template SortedChain& SortedChain:DistinctInsert(const E& e)/如果表中不存在关键值与e相同的元素,则插入e /否则引发异常BadInputSortedChainNode *p = first,*tp = 0;/跟踪p/移动tp以便把e插入到tp之后for(;p & p-data link);/检查关键值是否重复if(p & p-data = e)throw BadInput();/若没有出现重复关键值,则产生一个关键值为e的新节点SortedChainNode *q = new SortedChainNode;q-data = e;/将新节点插入到tp之后q-link = p;if(tp)tp-link = q;elsefirst = q;return *this;template void Chain:Output(ostream& out) constSortedChainNode *current;for(current = first;current;current = current-link)outdata ;template ostream& operator(ostream& out,const SortedChain& x)x.Output(out);return out;#endif/file:sortedChainNode.h#ifndef _SORTEDCHAINNODE_H_#define _SORTEDCHAINNODE_H_templateclass SortedChain;templateclass SortedChainNodefriend SortedChain;public:SortedChainNode()data = 0;link = NULL;SortedChainNode(E x)data = x;link = NULL;private:E data;SortedChainNode *link;#endif/file:exception.h#ifndef _EXCEPTION_H_#define _EXCEPTION_H_#include class NoMem public: NoMem() ;int my_new_h

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论