- 浏览: 42928 次
文章分类
- 全部博客 (35)
- java (35)
- zk安装 (1)
- 从零开始认识 JasperReport + IReport (JasperReport部分) (1)
- Javadoc查看、搜索、比较利器——GroovyHelp 3.1.5 GA发布 (1)
- 设计模式-Simple Factory 模式 (1)
- biaodashi (1)
- 格局定乾坤 (1)
- 一个spatialReference引发的血案 (1)
- 创造亿万富翁的神奇公式 (1)
- 打印机 (2)
- js 调用flex 方法 (1)
- tomcat部署 (1)
- 2010 -> 2011 (1)
- Android颜色选择器 (1)
- 《软件开发的边界-管理成功的项目》 (1)
- 毕业了 (1)
- MapXtreme2004开发的Web程序的部署 (1)
- 一个比较有用的XML文件操作类 C#代码 可以继续扩展 (1)
- J2EE中 实体BEAN和会话BEAN的区别 (1)
- iOS开发之Objective-C与JavaScript的交互 (1)
- iOS开发之多媒体播放 (1)
- 单链表逆序 (1)
- ORA-01114错误原因及解决方法(临时表空间坏掉、或者满了) (1)
- hibernate使用sql查询text类型的字段出错 (1)
- 腾讯微博java(android) sdk 标签相关api详细介绍 (1)
- Android开发之数据保存技术(一) (1)
- 瞎混了好久,今天开博 (1)
- MySQL安装详解(V5.5 For Windows) (1)
- Execution in the Kingdom of Nouns (1)
- EJB 2.0 VS EJB3.0 (1)
- 一个简单的Unix脚本(文件拷贝打包) (1)
- php session_cache_limiter详解 (1)
- llvm-clang (1)
- jdbc学习笔记-----jdbc性能优化 (1)
- java教程:解析java的多线程机制(二) (1)
最新评论
实现一:
#include "stdafx.h" <br>
#include <iostream> <br>
using namespace std; <br><br>
template <typename T> <br>
struct MyNode <br>
{ <br>
T id; <br>
MyNode * next; <br>
MyNode(T _id) <br>
{ <br>
id = _id; <br>
next = NULL; <br>
} <br>
}; <br><br>
template <typename T> <br>
class MyList <br>
{ <br>
MyNode<T> * head; <br>
MyNode<T> * current; <br>
public: <br>
MyList() : head(NULL) {} <br>
void add(T value) <br>
{ <br>
MyNode<T>* node = new MyNode<T>(value); <br>
if(head == NULL) <br>
{ <br>
head = node; <br>
current = head; <br>
} <br>
else <br>
{ <br>
current->next = node; <br>
current = node; <br>
} <br>
} <br>
void showAll() <br>
{ <br>
MyNode<T> *go = head; <br>
while(go != NULL) <br>
{ <br>
cout<<go->id<<endl; <br>
go = go->next; <br>
} <br><br>
} <br>
void reverse() <br>
{ <br>
MyNode<T> *preNode = NULL; <br>
MyNode<T> *currentNode = head; <br>
MyNode<T> *nextNode = head->next; <br>
while(true) <br>
{ <br>
nextNode = currentNode->next; <br>
currentNode->next = preNode; <br>
preNode = currentNode; <br>
currentNode = nextNode; <br>
if(currentNode->next == NULL) <br>
{ <br>
head = currentNode; <br>
head->next = preNode; <br>
break; <br>
} <br>
} <br>
} <br>
}; <br><br><br>
int main(int argc, char * argv[]) <br>
{ <br>
MyList<int> *list = new MyList<int>(); <br>
list->add(123); <br>
list->add(456); <br>
list->add(789); <br>
list->showAll(); <br>
list->reverse(); <br>
cout<<"after reverse:"<<endl; <br>
list->showAll(); <br>
system("pause"); <br>
return 0; <br>
}
实现二:
#include<iostream><br>
#include<conio.h><br>
#include<list><br>
using namespace std;
template<class T><br>
struct Node{<br>
T value;<br>
struct Node<T>* next;<br>
Node(const T& v):value(v),next(NULL){}<br>
~Node(){<br>
delete next;<br>
next=NULL;<br>
cout<<"~Node()"<<endl;<br>
}<br>
};
template<class T,class N><br>
class Iterator{<br>
public:<br>
Iterator(T v=NULL):t(v){}<br>
T& operator++()const{<br>
t=t->next;<br>
return t;<br>
}<br>
const N& operator*()const{<br>
return t->value;<br>
}<br>
N&operator*(){<br>
return t->value;<br>
}<br>
const T& getT()const{<br>
return t;<br>
}<br>
Iterator& operator=(Iterator& other){<br>
t=other.getT();<br>
return *this;<br>
}<br>
const Iterator& operator=(Iterator& other)const{<br>
t=other.getT();<br>
return *this;<br>
}<br>
private:<br>
mutable T t;<br>
};
template<class T,class N><br>
bool operator!=(Iterator<T,N> i1,Iterator<T,N> i2){<br>
return i1.getT()!=i2.getT();<br>
}
<br>
template<class T><br>
class NList{<br>
public:<br>
typedef Iterator<Node<T>*,T> iterator;<br>
typedef const Iterator<Node<T>*,T> const_iterator;<br>
NList(const T& value){<br>
head=tail=new Node<T>(value);<br>
}<br>
void addNode(const T& value){<br>
tail->next=new Node<T>(value);<br>
tail=tail->next;<br>
}<br>
iterator begin(){<br>
return iterator(head);<br>
}<br><br>
iterator end(){<br>
return iterator(tail->next);<br>
}<br>
void reverse(){<br>
if(head==tail)<br>
return ;<br>
Node<T>* end=head,*begin=tail;<br>
Node<T>* p1=head,*p2,*p3;<br>
p2=p1->next;<br>
p1->next=NULL;<br>
while(p2!=tail){<br>
p3=p2->next;<br>
p2->next=p1;<br>
p1=p2;<br>
p2=p3;<br>
}<br>
p2->next=p1;<br>
head=begin,tail=end;<br>
}<br>
~NList(){<br>
delete head;<br>
head=NULL;<br>
tail=NULL;<br>
cout<<"~NList()"<<endl;<br>
}<br>
private:<br>
Node<T>* head;<br>
Node<T>* tail;<br>
};
<br>
int main(){<br>
NList<int> nlist(1);<br>
nlist.addNode(2);<br>
nlist.addNode(3);<br>
NList<int>::const_iterator p=nlist.begin(),end=nlist.end();<br>
for(p=nlist.begin();p!=end;++p)<br>
cout<<*p<<endl;<br>
nlist.reverse();<br>
end=nlist.end();<br>
for(p=nlist.begin();p!=end;++p)<br>
cout<<*p<<endl;<br>
getch();<br>
return 0;<br>
}
发表评论
-
java教程:解析java的多线程机制(二)
2012-02-08 15:27 973<div>四、线程间的同步 <div ... -
jdbc学习笔记-----jdbc性能优化
2012-02-08 15:07 961<div>这里说的是如何正确使用jdbc编 ... -
llvm-clang
2012-02-07 17:14 1008clang ... -
php session_cache_limiter详解
2012-02-07 15:18 2716<span style="backgr ... -
一个简单的Unix脚本(文件拷贝打包)
2012-02-04 17:09 919题目要求: 实现备份脚本,将目录: /sbin ... -
EJB 2.0 VS EJB3.0
2012-02-04 16:39 858SUMMARY: Removal of home in ... -
Execution in the Kingdom of Nouns
2012-02-03 16:39 1849<h3>Execution in the ... -
MySQL安装详解(V5.5 For Windows)
2012-02-01 09:39 788<p>MySQL安装详解(V5.5 For ... -
瞎混了好久,今天开博
2012-01-31 14:13 760<p>作为一名“无证”程序员,自己瞎混了这 ... -
Android开发之数据保存技术(一)
2012-01-11 17:14 7890<h1>Android开发之数据保存技术( ... -
腾讯微博java(android) sdk 标签相关api详细介绍
2012-01-11 13:53 1094<span style="font-f ... -
hibernate使用sql查询text类型的字段出错
2011-12-28 16:28 1421晚上查了一下,做个记录 hibernate默认不支持t ... -
ORA-01114错误原因及解决方法(临时表空间坏掉、或者满了)
2011-12-28 14:23 1747<span style="font-f ... -
iOS开发之多媒体播放
2011-12-19 15:49 978iOS sdk中提供了很多方便的方法来播放多媒体。本 ... -
iOS开发之Objective-C与JavaScript的交互
2011-12-19 14:48 1080UIWebView是iOS最常用的SDK之一,它有一个 ... -
J2EE中 实体BEAN和会话BEAN的区别
2011-12-15 10:14 882<span style="" ... -
一个比较有用的XML文件操作类 C#代码 可以继续扩展
2011-12-15 09:49 877CXml</span>{</spa ... -
MapXtreme2004开发的Web程序的部署
2011-12-14 16:39 835</span></font>& ... -
毕业了
2011-12-14 11:39 670今天终于顺利的通过了硕士毕业答辩。<br> ... -
《软件开发的边界-管理成功的项目》
2011-12-13 10:04 733本书是Rational Software的资深项目经理 ...
相关推荐
单链表逆序 用了两个指针变量。 非递归实现。
单链表逆序详解 1、具有链表头的单链表 一段单链表逆序的程序 (2)取p3保留p2->next p3=p2->next; 将p2插入p1之前 p2->next = p1; p1指向p2指向的节点 p1=p2; p2指向p3指向的节点 p2=p3;
单链表逆序(简明,易懂) 单链表逆序(简明,易懂) 单链表逆序(简明,易懂)
初学java的第一次作业,单链表逆序
有一次,我去陆家嘴一家银行面试,面试官给我出了一道算法编程题,用Java实现单链表逆序,不到10分钟,我就写出来了,拿到了offer。 但是当时是写在纸上的,我用手机拍了下来,然后回去又在电脑上把代码敲了下来,...
实验二--单链表逆序排列.pdf
单链表的合并(递归-非递归)以及将单链表逆序
主要介绍了C语言实现单链表逆序与逆序输出,是数据结构与算法中比较基础的重要内容,有必要加以牢固掌握,需要的朋友可以参考下
linux 下 c语言实现 单链表的逆序与排序, 包含测试程序, 编译时需加-DTEST
单链表的逆序排列,用的是c++语言的,程序正确能够运行,易懂
主要介绍了java单链表逆序用法代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
创建单链表,单链表逆序输入,最终正序输出。是用以独立函数写出
利用栈来实现单链表的逆序 学习算法必须学的经典程序。
C++使用递归来顺序和逆序输出链表的全部元素
主要介绍了应用java语言实现单链表逆序,,需要的朋友可以参考下
昨天到笔试,没想到出了这么一个题,用java实现单链表,并把它逆序,输出,我晕了半天,回来才做出来,不知道还有没有用?!
算法分析_有无头结点的单链表的逆序和插入排序问题集 算法分析_有无头结点的单链表的逆序和插入排序问题集