- 浏览: 44225 次
文章分类
- 全部博客 (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 1015<div>四、线程间的同步 <div ... -
jdbc学习笔记-----jdbc性能优化
2012-02-08 15:07 1005<div>这里说的是如何正确使用jdbc编 ... -
llvm-clang
2012-02-07 17:14 1078clang ... -
php session_cache_limiter详解
2012-02-07 15:18 2767<span style="backgr ... -
一个简单的Unix脚本(文件拷贝打包)
2012-02-04 17:09 954题目要求: 实现备份脚本,将目录: /sbin ... -
EJB 2.0 VS EJB3.0
2012-02-04 16:39 895SUMMARY: Removal of home in ... -
Execution in the Kingdom of Nouns
2012-02-03 16:39 1891<h3>Execution in the ... -
MySQL安装详解(V5.5 For Windows)
2012-02-01 09:39 819<p>MySQL安装详解(V5.5 For ... -
瞎混了好久,今天开博
2012-01-31 14:13 797<p>作为一名“无证”程序员,自己瞎混了这 ... -
Android开发之数据保存技术(一)
2012-01-11 17:14 7937<h1>Android开发之数据保存技术( ... -
腾讯微博java(android) sdk 标签相关api详细介绍
2012-01-11 13:53 1136<span style="font-f ... -
hibernate使用sql查询text类型的字段出错
2011-12-28 16:28 1463晚上查了一下,做个记录 hibernate默认不支持t ... -
ORA-01114错误原因及解决方法(临时表空间坏掉、或者满了)
2011-12-28 14:23 1802<span style="font-f ... -
iOS开发之多媒体播放
2011-12-19 15:49 1012iOS sdk中提供了很多方便的方法来播放多媒体。本 ... -
iOS开发之Objective-C与JavaScript的交互
2011-12-19 14:48 1123UIWebView是iOS最常用的SDK之一,它有一个 ... -
J2EE中 实体BEAN和会话BEAN的区别
2011-12-15 10:14 933<span style="" ... -
一个比较有用的XML文件操作类 C#代码 可以继续扩展
2011-12-15 09:49 905CXml</span>{</spa ... -
MapXtreme2004开发的Web程序的部署
2011-12-14 16:39 864</span></font>& ... -
毕业了
2011-12-14 11:39 695今天终于顺利的通过了硕士毕业答辩。<br> ... -
《软件开发的边界-管理成功的项目》
2011-12-13 10:04 760本书是Rational Software的资深项目经理 ...
相关推荐
此外,在数据库查询、算法设计以及数据预处理等场景下,单链表逆序也发挥着关键作用。掌握单链表逆序的实现方法有助于提高程序员解决复杂问题的能力。 ### 非递归逆序单链表的实现 在给出的代码片段中,我们看到一...
单链表逆序详解 1、具有链表头的单链表 一段单链表逆序的程序 (2)取p3保留p2->next p3=p2->next; 将p2插入p1之前 p2->next = p1; p1指向p2指向的节点 p1=p2; p2指向p3指向的节点 p2=p3;
单链表逆序(简明,易懂) 单链表逆序(简明,易懂) 单链表逆序(简明,易懂)
单链表的合并(递归-非递归)以及将单链表逆序 单链表是数据结构中的一种基本结构,它是一种顺序存储的链式结构。单链表的合并是指将两个或多个单链表合并成一个单链表,而保持原来的顺序。单链表的逆序是指将...
这次的作业“单链表逆序”旨在让你理解链表的基本操作以及如何通过编程实现链表的逆序。下面我们将深入探讨这个主题。 首先,单链表的基本结构包括头节点(head)和一系列节点,每个节点有两部分:数据域(用于存储...
有一次,我去陆家嘴一家银行面试,面试官给我出了一道算法编程题,用Java实现单链表逆序,不到10分钟,我就写出来了,拿到了offer。 但是当时是写在纸上的,我用手机拍了下来,然后回去又在电脑上把代码敲了下来,...
实验二--单链表逆序排列.pdf
linux 下 c语言实现 单链表的逆序与排序, 包含测试程序, 编译时需加-DTEST
本篇将详细讲解如何实现单链表的逆序以及逆序输出。 首先,我们要理解逆序输出的概念。逆序输出是指在输出链表元素时,按照相反的顺序呈现,而不是按照链表原有的顺序。这可以通过两种方式实现: 1. **递归**:...
单链表的逆序排列,用的是c++语言的,程序正确能够运行,易懂
【Java 单链表逆序】 在计算机科学中,链表是一种常见的数据结构,而单链表是其中最基础的形式。单链表由一系列节点组成,每个节点包含数据和指向下一个节点的引用(通常称为`next`)。逆序一个单链表意味着将链表中...
创建单链表,单链表逆序输入,最终正序输出。是用以独立函数写出
### 利用栈来实现单链表的逆序 #### 背景介绍 在计算机科学领域,数据结构是组织和存储数据的方式之一,而算法则是处理这些数据的方法。单链表是一种常见的线性数据结构,它通过节点之间的指针连接来存储数据。栈是...
单链表逆序是指将链表中的元素顺序颠倒,使得原本的第一个元素变为最后一个,原本的最后一个元素变为第一个。这个过程可以通过迭代或递归的方式来实现。本文将详细介绍如何使用Java实现单链表的逆序。 首先,我们...
### C++ 使用递归来顺序和逆序输出链表的全部元素 #### 概述 在计算机科学中,链表是一种常见的数据结构,用于存储一系列的数据元素。每个元素包含实际存储的数据和一个指向列表中下一个元素的引用(或指针)。在...
昨天到笔试,没想到出了这么一个题,用java实现单链表,并把它逆序,输出,我晕了半天,回来才做出来,不知道还有没有用?!
总的来说,理解和掌握单链表逆序是软件工程师必备的技能之一,它涉及到数据结构的基础知识和逻辑思维能力,同时也是面试和笔试中常见的题目类型。通过这样的练习,不仅可以提升对链表操作的理解,还能锻炼解决问题的...