鏈表反轉

個人代碼如下:

#include <iostream>
using namespace std;

typedef struct STNode
{
	int data;
	struct STNode *next;
}Node;

void CreateList(Node *&Root, int len)
{
	Node *pNewNode = NULL;
	for(int i = 0; i < len; ++i)
	{
		pNewNode = new Node;
		pNewNode->data = i;
		pNewNode->next = Root;
		Root = pNewNode;
	}
}

void PrintList(const Node *pRoot)
{
	while(NULL != pRoot)
	{
		cout<< pRoot->data << " ";
		pRoot = pRoot->next;
	}
}

void RevList(Node *&Root)
{
	assert(NULL != Root);
	Node *pFront = NULL;
	Node *pNext = NULL;
	while(NULL != Root)
	{
		pNext = Root->next;
		Root->next = pFront;
		pFront = Root;
		Root = pNext;
	}
	Root = pFront;
}

int main()
{
	Node *Root = NULL;
	CreateList(Root, 5);
	RevList(Root);
	PrintList(Root);
}

輸出:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章