p45-001
2013-11-11 00:56
337 查看
数据结构与算法 p45-001
试设计一个非递归算法在O(n)时间内将一个含有n个元素的单链表逆置,要求其辅助空间为常量。
试设计一个非递归算法在O(n)时间内将一个含有n个元素的单链表逆置,要求其辅助空间为常量。
#include<iostream.h> typedef int T; template<class T> struct Node { T data; Node *next; }; template <class T> class LinkList { private: Node<T> *Head; public: LinkList() ; ~LinkList(); void CreateList(int n); T GetElem(int i); int Length(); void Modify(int i,int value); void ListDisplay(); }; template<class T> LinkList<T>::LinkList() { Head=new Node<T>; Head->next=NULL; } template<class T> LinkList<T>::~LinkList() { Node<T> *p; while(Head) { p=Head; Head=Head->next; delete p; } Head=NULL; } template<class T> void LinkList<T>::CreateList(int n) { Node<T> *p,*s; p=Head; cout<<"请依次输入元素:"<<endl; for(int i=1;i<=n;i++) { s=new Node<T>; cin>>s->data; s->next=p->next; p->next=s; p=s; } } template<class T> void LinkList<T>::Modify(int i,int value) { Node<T> *p; p=Head->next; int j=1; while(p&& j<i) { p=p->next; j++; } p->data=value; } template<class T> T LinkList<T>::GetElem(int i) { Node<T> *p; p=Head->next; int j=1; while(p&&j<i) { p=p->next;j++; } return p->data; } template <class T> int LinkList<T>::Length() { int len=0; Node<T> *p; p=Head; while(p->next) { len++;p=p->next; } return len; } template <class T> void LinkList<T>::ListDisplay() { Node<T> *p; p=Head->next; int i=1; while(p) { cout<<p->data<<" "; p=p->next; i++; } cout<<endl; } int main() { int i,j,la_len; T a,b; LinkList<int> La; cout<<"请输入要创建A集合中元素个数:"; cin>>la_len; La.CreateList(la_len); cout<<endl<<"La:"<<"\t"; La.ListDisplay(); int a_length=La.Length(); for(i=a_length,j=1;i>j;i--,j++) { b=La.GetElem(j); a=La.GetElem(i); La.Modify(i,b); La.Modify(j,a); } cout<<endl<<"单链表逆置后,A集合的元素如下:"; cout<<endl<<"La:"<<"\t"; La.ListDisplay(); cout<<endl; return 0; }
相关文章推荐
- Android实现导航菜单左右滑动效果
- 图纸网站整改意见.doc
- android多选联系人实现
- SmartUpload类实现上传和下载
- 茶盘网整改意见
- Concrete maths reading notes 1 - ch. 1&2
- c++中WaitForSingleObject函数解析
- myeclipse 遇到的一些问题及解决方案
- C++中const用法总结
- c# in depth之泛型的类型约束详细
- 10g Data Guard physical standby的Bug 5526409(Fail to queue the whole FAL gap)
- CISCO2691的OSPF点对点密文测评测试
- 三种经典网页音乐播放器
- 2013 ACMICPC Hangzhou Ants
- BeanCreationException: Error creating bean with name 'employeeAction':
- NYOJ 488 素数环
- 在window7下安装 phpunit 单元测试
- ubuntu下使用intel N7260 wifi
- cocos2d-x学习之旅(二):1.2 cocos2d-x Visual Studio2010 开发环境搭建 windows 7 32位
- 备忘录模式