LinkedList链表的使用
来源:互联网 发布:waves gtr for mac 编辑:程序博客网 时间:2024/06/05 00:42
数据结构复习的第一天,从最简单的LinkedList开始,写这个代码的时候,没有遇到太难解决的问题,,啊,果然是自己进步了。除了c++的语法有些还不太熟悉以外,LinkedList理解起来是没有难度的,基本操作,增删改查。下面是代码:
//// main.cpp// LinkListDemo//// Created by xin wang on 4/14/15.// Copyright (c) 2015 xin wang. All rights reserved.//#include <iostream>class OutOfBounds {public: OutOfBounds(){ std::cout<<"out of bounds"<<std::endl; }};class Nomen{public: Nomen(){ std::cout<<"Nomen error"<<std::endl; }};template<class T>class LinkList{public: LinkList(int Maxsize=10); ~LinkList(){delete []element;}//析构函数 bool isEmpty() {return length == 0;}//判断是否为空 int Length() const{return length;};//返回链表的长度 bool Find(int k,T &x)const;//返回是否存在某个元素 int Search(const T& x)const;//寻找某个元素在链表中的位置 LinkList<T>& Delete(int k,T& x);//删除某个元素 LinkList<T>& Insert(int k,const T& x);//插入某个元素// void OutPut(ostream & out)const; private: T *element; int MaxSize; int length; };//构造函数template <class T>LinkList<T>::LinkList(int MaxLinkSize){ MaxSize = MaxLinkSize; element = new T[MaxLinkSize]; length=0;}//链表中是否存在第某个值,//如果存在的话,就把他取出来放进x中,如果不存在的话,就返回falsetemplate <class T>bool LinkList<T>::Find(int k, T& x)const{ if (k<1||k>length) { return false; } x = element[k-1]; return true; }//查找链表中是否存在某个元素,//如果存在的话,就返回他的位置,如果不存在的话,就返回0;template <class T>int LinkList<T>::Search(const T& x)const{ for (int i=0;i<length; i++) { if(element[i]==x){ return i++; } } return 0;}//删除链表中的第k个元素,如果找到这个元素的话,就将其长度减1,//返回这个链表,如果不存在的话,就抛出异常template <class T>LinkList<T>& LinkList<T>::Delete(int k, T& x){ if (Find(k, x)) for (int i=0; i<length; i++) { element[i-1]=element[i]; } length--; return *this; }//往链表中的第几个位置插入插入元素,如果位置不在数组的范围内,就抛出异常//如果长度==最大长度的话,就不能往里面插了,也会抛出异常,插入的时候,把那个位置之后的元素整体往后移动一个位置//然后再将那个元素放到那个位置上面,最后,把整个链表的长度加1.template <class T>LinkList<T>& LinkList<T>::Insert(int k, const T& x){ if (k<0 || k>length) { throw OutOfBounds(); } if (length==MaxSize) { throw Nomen(); } for (int i=length-1; i>=k; i++) { element[i+1]=element[i]; } element[k]=x; length++; return *this;}//测试int main(int argc, const char * argv[]) { int x=0; LinkList<int> linklist(10); std::cout<<"链表为空吗?"<<linklist.isEmpty()<<std::endl; std::cout<<"链表长度为"<<linklist.Length()<<std::endl; linklist.Insert(0, 2); linklist.Insert(1, 3); std::cout<<"链表长度为"<<linklist.Length()<<std::endl; linklist.Delete(1, x); std::cout<<"链表长度为"<<linklist.Length()<<std::endl; std::cout<<linklist.Search(2)<<std::endl; return 0;<p>}</p>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">第一次写博客,以后还会陆陆续续写下去(ps:小海豹带出来的孩子要好好写博客!</span><img alt="微笑" src="http://static.blog.csdn.net/xheditor/xheditor_emot/default/smile.gif" style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);" /><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">)</span>
0 0
- LinkedList链表的使用
- 单向链表LinkedList的使用
- LinkedList的基本使用
- 使用单向链表实现LinkedList
- JAVA中實現鏈表--LinkedList的使用
- Queue和LinkedList的使用
- Java中LinkedList的使用
- LinkedList链表形式的列表应用
- LinkedList,双向链表的实现
- c# collections linkedlist 链表的遍历
- 使用链表(LinkedList) mix-in 到其中的栈(Stack)
- 双向链表(LinkedList)
- LinkedList 单向链表
- LinkedList-链表集合
- LinkedList 双向链表
- LinkedList链表集合
- arraylist arraylist使用实例 linkedlist linkedlist源码解析 linkedlist和arraylist的区别
- 使用LinkedList
- <meta name="ROBOTS" content="NOODP">
- UVA - 12627 Erratic Expansion 分析
- OC NSString的简单用法
- QVTKWidget+itk+vtk 交互问题
- rhel 5.x和rhel 6.x网卡绑定
- LinkedList链表的使用
- cf_298
- java 红黑树
- Jsp/servlet/cgi的区别
- java.lang.annotation 注解 包分析 自定义annotation
- 八皇后算法
- 舒适的路线 2006年
- UIAlertView 在IOS8.3中崩溃问题
- IOS 警告 汇总