單鏈表翻轉---C++實現

本文旨在記錄單鏈表翻轉,便於日後學習


代碼如下:


#include <iostream>
#include <string>

using namespace std;


struct node
{
	int val;
	struct node *next;
};


node *reverse_list(node *p)
{
	node *tmp=NULL;

	while (p)
	{
		node *k = p->next;
		p->next = tmp;
		tmp = p;
		p = k;
	
	}
	return tmp;
}


int main(int argc, char *argv[])
{
	string s1;
	getline(cin,s1);

	node *head = (node *)malloc(sizeof(node));
	node *p = head;


	for (int i = 0; i < s1.size(); i++)
	{
		p->val = s1[i] - '0';
		node *new_node = (node *)malloc(sizeof(node));

		if (i == s1.size() - 1)
		{
			p->next = NULL;
			break;
		}

		p->next = new_node;
		p = p->next;
	}

	node *k = reverse_list(head);

	while (k)
	{
		cout << k->val << " ";
		k = k->next;
	}
	return 0;
}


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