单链表
2015-10-14 09:22
288 查看
[code]#include<bits/stdc++.h> using namespace std; template <class T> class Link { public: T data; Link<T> *next; Link(const T info) { data=info; next=NULL; } Link(const Link<T> *nextvalue) { next=nextvalue; } }; template<class T> class inkList : public Link<T> { private: Link<T> *head,*tail; Link<T> *setPos(int p); public: inkList(); ~inkList(); bool isEmpty(); void Clear(); int length(); bool Append(const T value); //表尾添加元素 bool Insert(const int p,const T value); bool Delete(const int i); bool getValue(const int i, T &value); bool getPos(int &p,const T value); }; template<class T> inkList<T>::inkList() { head=tail=new Link<T>; } template<class T> inkList<T>::~inkList() { Link<T> *tmp; while(head!=NULL) { tmp=head; head=head->next; delete tmp; } } template <class T> Link<T>* inkList<T>::setPos(int i) { int cnt=0; if(i==-1) { return head; } Link<T> *p=new Link<T>(head->next); while(p!=NULL&&cnt<i) { p=p->next; cnt++; } return p; } template<class T> bool inkList<T> ::Insert(const int i,const T value) { Link<T> *p,*q; if((p==setPos(i-1))==NULL) { cout<<"非法插入点"<<endl; return 0; } q=new Link<T>(value,p->next); p->next=q; if(p==tail) tail=q; return 1; } template<class T> bool inkList<T>::Delete(const int i) { Link<T> *p,*q; if((p==setPos(i-1))==NULL||p==tail) { cout<<"error"<<endl; return 0; } q=p->next; if(q==tail) { tail=p; p->next==NULL; delete q; } else if(q!=NULL) { p->next=q->next; delete q; } return 1; } int main() { Link<int>t(10); t.data; return 0; }
相关文章推荐
- Java面向对象的五个基本原则
- POJ 1000 A+B Problem
- openerp config file
- android中使用Intent在activity之间传递数据
- adbd cannot run as root in production builds
- iOS开发新框架 - ReactiveCocoa学习
- servlet的编码原理
- JDK下载安装与配置
- Android中ImageView属性的使用(四)
- 构建Maven工程(2)---MyEclipse安装maven插件
- JSP的应用
- 前端不为人知的一面–前端冷知识集锦
- Spring中配置数据源的4种形式
- shrio教程初级(三)基于url拦截-用户授权
- XMemcached的缓存过期时间问题
- 283-Move Zeroes
- 总结struts2 iterator status的用法
- 商标中的颜色心理学
- Android utc时间
- sql之left join、right join、inner join的区别