zoukankan      html  css  js  c++  java
  • 逆转单链表

    #include<iostream>
    using namespace std;
    
    template<class T>
    struct ListNode
    {
    	T Data;
    	ListNode* Flink;
    	ListNode() { Flink = NULL; }
    	ListNode(T SHData, ListNode<T>* SHFlink = NULL)
    	{
    		Data = SHData;
    		Flink = SHFlink;
    	}
    };
    
    template<class T>
    class SHClass
    {
    public:
    	ListNode<T>* Head;
    	SHClass();
    	void SHAddNode(T SHData);
    	ListNode<T>* ReverseList(ListNode<T>* Head);
    };
    
    template<class T>
    SHClass<T>::SHClass()
    {
    	this->Head = NULL;
    }
    
    template<class T>
    void SHClass<T>::SHAddNode(T data)         
    {
    	ListNode<T> *NewNode = NULL;
    	if (Head == NULL)
    	{
    		NewNode = new ListNode<T>(data, Head);
    		Head = NewNode;
    	}
    	else
    	{
    		ListNode<T> *lptr = Head;
    
    		while (lptr->Flink != NULL)
    		{
    			lptr = lptr->Flink;
    		}
    		NewNode = new ListNode<T>(data, lptr->Flink);
    		lptr->Flink = NewNode;
    	}
    }
    
    template<class T>                              
    ListNode<T>* SHClass<T>::ReverseList(ListNode<T>* head)
    {
    	ListNode<T>* p = NULL; //Blink   Node
    	ListNode<T>* r = head; //Current Node
    	ListNode<T>* q = NULL; //Flink   Node
    	while (r != NULL)
    	{
    		q = r->Flink;  //The Flink Node
    		r->Flink = p;  //Reverse!
    		p = r;         //For Next Cycle
    		r = q;		   //For Next Cycle
    	}
    	return p;
    }
    
    
    int main()
    {
    	SHClass<int> a;
    	a.SHAddNode(1);
    	a.SHAddNode(2);
    	a.SHAddNode(3);
    	ListNode<int> *lptr;
    	lptr = a.Head;
    	while (lptr != NULL)
    	{
    		cout << lptr->Data;
    		lptr = lptr->Flink;
    	}
    	cout << endl;
    	a.Head = a.ReverseList(a.Head);
    	lptr = a.Head;
    	while (lptr != NULL)
    	{
    		cout << lptr->Data;
    		lptr = lptr->Flink;
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    复利计算- 结对
    《构建之法》第4章读后感
    复利计算--单元测试
    实验一 命令解释程序的编写实验
    Scrum 项目准备4.0
    Scrum 项目准备3.0
    scrum 项目准备2.0
    【操作系统】实验三 进程调度模拟程序
    scrum 项目准备1.0
    Scrum团队成立
  • 原文地址:https://www.cnblogs.com/lsh123/p/7569046.html
Copyright © 2011-2022 走看看