1. 程式人生 > >(三)C++逆置單鏈表

(三)C++逆置單鏈表

                                              逆置單鏈表

建立長度為n的單鏈表,然後將其資料元素逆置,即第1個元素變為最後一個元素,第2個元素變為倒數第2個元素,以此類推,最後一個元素變為第1個元素。(處理的資料型別為字元型。必須使用連結串列完成。)

輸入

第一行為連結串列長度n; 
第二行為連結串列中的n個數據元素的值。

輸出

逆置後的原始的值。

樣例輸入

10
ABCDEFGHIJ

樣例輸出

J I H G F E D C B A
// 9逆置單鏈表.cpp: 定義控制檯應用程式的入口點。
//

#include "stdafx.h"
#include <iostream>
typedef char ElemType;
using namespace std;
class List {
	public:
		List();
		void Creat_List(int len);
		void Reverse();
		void Output();
		~List();
	private:
		ElemType data;
		List *Next;
};
List::List() {
}
void List::Creat_List(int len) {
	int i = 0;
	List *L,*Node;
	L = this;
	L->data = len;
	while (i<len)
	{
		Node = new List;
		cin >> Node->data;
		L->Next = Node;
		L = L->Next;
		i++;
	}
	L->Next = NULL;
}
void List::Reverse() {
	List *L,*Node,*Temp;
	List *Head=new List;
	Head->Next = NULL;
	Node = this->Next;
	while (Node) {
		L = Node->Next;
		Temp=Head->Next;
		Head->Next = Node;
		Node->Next = Temp;
		Node = L;
	}
	this->Next = Head->Next;
	Head->Next = NULL;
	delete Head;
}
void List::Output() {
	List *L;
	L = this->Next;
	while (L) {
		cout << L->data << " ";
		L = L->Next;
	}
}
List::~List() {//c++刪除連結串列就是方便
	if (this->Next) {
		delete this->Next;
	}
}
int main()
{
	int len = 0;
	List *Head = new List;
	cin >> len;
	Head->Creat_List(len);
	Head->Reverse();
	Head->Output();
	delete Head;//養成好習慣
    return 0;
}