单链表 C++实现
来源:互联网 发布:解题软件英语 编辑:程序博客网 时间:2024/06/06 02:01
重新修改了下,单链表C++实现,Ubuntu14下测试可运行。
List.h#include<stdlib.h>#include<string>using namespace std;template<class T>struct LinkNode{T data;LinkNode<T> * link;LinkNode(LinkNode<T> *ptr = NULL) { link = ptr; }LinkNode(const T& item, LinkNode<T> *ptr = NULL){data = item; link = ptr;}};template<class T>class List{public:List(){ first = new LinkNode<T>; }List(const T&x){ first = new LinkNode<T>(x); }List(List<T>&L);~List(){}void makeEmpty();LinkNode<T> *getHead() const { return first; }LinkNode<T> *Search(T x);LinkNode<T> *Locate(int i) const;bool getData(int i, T & x) const;void setData(int i, T &x);bool Insert(int i, T &x);bool Remove(int i, T&x);bool IsEmpty() const{return first->link == NULL ? true : false;}bool IsFull()const { return false; }void Show();LinkNode<T>* deleteDuplicates(LinkNode<T>* p);LinkNode<T>* first;};template<class T>void List<T>::makeEmpty(){LinkNode<T>*q;while (first->link != NULL){q = first->link;first->link = q->link;delete q;}};template<class T>LinkNode<T>*List<T>::Locate(int i) const{if (i < 0)return NULL;LinkNode<T> *current = first; int k = 0;while (current != NULL && k < i){current = current->link; k++;}return current;};template<class T>bool List<T>::getData(int i, T &x) const {if (i < 0) return NULL;LinkNode<T> *current = Locate(i);if (current == NULL) return false;else { x = current->data; return true; }}template<class T>void List<T>::setData(int i, T &x) {if (i <= 0) return;LinkNode<T> *current = Locate(i);if (current == NULL) return;else { current->data = x; }}template<class T>bool List<T>::Insert(int i, T &x){if (first == NULL || i == 0){LinkNode<T> *newNode = new LinkNode<T>(x);newNode->link = first;first = newNode;}else{LinkNode<T> *current = first;for (int k = 1; k < i; k++)if (current == NULL) break;else current = current->link;if (current == NULL)return false;else{LinkNode<T> *newNode = new LinkNode<T>(x);newNode->link = current->link;current->link = newNode;}}return true;}template<class T>bool List<T>::Remove(int i, T&x){LinkNode<T> *current = Locate(i - 1);if (current == NULL || current->link == NULL) return false;LinkNode<T> *del = current->link;current->link = del->link;x = del->data; delete del;return true;}template<class T>LinkNode<T>* List<T>::deleteDuplicates(LinkNode<T>* p) {if (p == NULL)return NULL;LinkNode<T> *cur = first;while (cur->link != NULL){if (cur->link->data != cur->data){cur = cur->link;}else{LinkNode<T> *del = cur->link;if (del->link == NULL){delete del;}else{cur->link = del->link;delete del;}}}return p;}template<class T>void List<T>::Show(){LinkNode<T>*current = first;while (current->link != NULL){cout << current->data << " ";current = current->link;}}
0 0
- 单链表(C#)实现
- 用C实现单链表
- C实现单链表
- C语言实现单链表
- 数据结构---单链表c实现
- C语言实现单链表
- 单链表的C实现
- C语言单链表实现
- 单链表实现(C++)
- C语言实现单链表
- 单链表C语言实现
- c语言单链表实现
- 单链表反转 c实现
- 单链表之C实现
- 单链表-C实现-初级
- 单链表 C语言实现
- 单链表实现-c
- 【C++】单链表的实现
- oauth认证四种模式中的第一种oauthation code模式
- POJ A Simple Problem with Integers 3468(线段树区间更新)
- 在MAC上配置SVN服务器 图文教程
- 安卓开发技术:监听软键盘的显示与隐藏
- JDBCUtils动手实现自己的JDBC工具类之二(实践篇)
- 单链表 C++实现
- cocos2d-x 学习笔记3
- 仿蘑菇街个人主页
- MVC简介
- 度量学习
- Microsoft Office 2013 Professional Plus官方MSDN正式版下载合集 64 32位原版镜像iso
- python requests 高级用法 -- 包括SSL 证书错误的解决方案
- java第五天
- IT人士学习英语的6个好网站