链表逆置

a 夏天 提交于 2020-02-17 08:53:31

 

 

/*#include <stdio.h>
#include <stdlib.h>
struct ListNode
{
	int val;
	ListNode* next;
	ListNode(int x) :val(x), next(NULL){

	}
};
class Solution
{
public:
	ListNode* partionNode(ListNode* head, int x){
		ListNode less_head(0);
		ListNode more_head(0);
		ListNode* less_ptr = &less_head;
		ListNode* more_ptr = &more_head;
		while (head)
		{
			if (head->val<x)
			{
				less_ptr->next = head;
				less_ptr = head;
			} 
			else
			{
				more_ptr->next = head;
				more_ptr = head;
			}
			head = head->next;
		}
		less_ptr->next = more_head.next;
		more_ptr->next = NULL;//将more_ptr即链表尾结点置为空
		return less_head.next;
	}

};
int main()
{
	ListNode a(1);
	ListNode b(4);
	ListNode c(3);
	ListNode d(2);
	ListNode e(5);
	ListNode f(2);
	a.next = &b;
	b.next = &c;
	c.next = &d;
	d.next = &e;
	e.next = &f;
	Solution s;
	ListNode* head = s.partionNode(&a, 3);
	while (head)
	{
		printf("%d\n", head->val);
		head = head->next;
	}
	system("pause");
	return 0;
} */
//链表的划分
#include <stdio.h>
#include <stdlib.h>
struct ListNode
{
	int val;
	ListNode* next;
	ListNode(int x) :val(x), next(NULL){

	}
};
class Solution
{
public:
	ListNode* partion(ListNode*head, int x){
		ListNode less_head(0);
		ListNode more_head(0);
		ListNode* less_ptr = &less_head;
		ListNode* more_ptr = &more_head;
		while (head)
		{
		  if (head->val<x)
		  {
			  less_ptr->next = head;
			  less_ptr = less_ptr->next;
		  } 
		  else
		  {
			  more_ptr->next = head;
			  more_ptr = more_ptr->next;
		  }
		  head = head->next;
		}
		more_ptr->next = NULL;
		less_ptr->next = more_head.next;
		return less_head.next;
	}

private:

};


int main()
{
	ListNode a(1);
	ListNode b(4);
	ListNode c(3);
	ListNode d(2);
	ListNode e(5);
	ListNode f(2);
	a.next = &b;
	b.next = &c;
	c.next = &d;
	d.next = &e;
	e.next = &f;
	Solution s;
	ListNode* head = s.partion(&a, 3);
	while (head)
	{
		printf("%d\n", head->val);
		head = head->next;
	}
	system("pause");
	return 0;
}

 


 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!