`
阿尔萨斯
  • 浏览: 4146825 次
社区版块
存档分类
最新评论

数据结构 - 反转单链表的循环算法(C++)

 
阅读更多

#include <iostream>

#define NULL 0

using namespace std;

struct Node
{
	char data;
	Node* next;
};

Node* create()
{
	Node* head = NULL;
	Node* rear = head;
	Node* p; // The pointer points to new created node.
	char tmp;

	do
	{
		cout << "Please input positive integer or #:";
		cin >> tmp;
		if(tmp != -1)
		{
			p = new Node;
			p->data = tmp;
			p->next = NULL;

			if(head == NULL)
			{
				head = p;
			}
			else
			{
				rear->next = p;
			}
			rear = p;
		}
	}
	while(tmp != '#');

	return head;
}

void print(Node* head)
{
	cout << "The current list is: ";
	Node* p = head;
	if(head != NULL)
	{
		do
		{
			cout << p->data << cout << ' ';
			p = p->next;
		}
		while(p != NULL);
	}
	cout << "\r\n";
}

void reverse(Node*& head) // Use & here since the function body changed the head pointer.
{
	if(head == NULL)
	{
		return;
	}

	Node*pre, *cur, *ne;
	pre = head;
	cur = head->next;
	while(cur)
	{
		ne = cur->next; // Store next pointer.
		cur->next = pre; // Reverse the current code pointer.
		pre = cur;
		cur = ne;
	}

	head->next = NULL;
	head = pre;
}

int main()
{
	Node* list = create();
	print(list);
	reverse(list);
	print(list);

	return 0;
}

// Output:
/*
Please input positive integer or #:1
Please input positive integer or #:5
Please input positive integer or #:8
Please input positive integer or #:3
Please input positive integer or #:2
Please input positive integer or #:7
Please input positive integer or #:9
Please input positive integer or #:f
Please input positive integer or #:g
Please input positive integer or #:t
Please input positive integer or #:Y
Please input positive integer or #:B
Please input positive integer or #:#
The current list is: 10FC0C3E8 50FC0C3E8 80FC0C3E8 30FC0C3E8 20FC0C3E8 70FC0C3E8 90FC0C3E8 f0FC0C3E8 g0FC0C3E8 t0FC0C3E8 Y0FC0C3E8 B0FC0C3E8 #0FC0C3E8
The current list is: #0FC0C3E8 B0FC0C3E8 Y0FC0C3E8 t0FC0C3E8 g0FC0C3E8 f0FC0C3E8 90FC0C3E8 70FC0C3E8 20FC0C3E8 30FC0C3E8 80FC0C3E8 50FC0C3E8 10FC0C3E8
*/
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics