程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> Remove Duplicates from Sorted List II

Remove Duplicates from Sorted List II

編輯:關於C++

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.

For example,
Given 1->2->3->3->4->4->5, return 1->2->5.

Given 1->1->1->2->3, return 2->3.

解題思路:新建一個鏈表,遍歷原來鏈表,若不重復則將結點插入新鏈表,重復則跳過.為了避免遍歷最後為重復結點,最後需將新鏈表末尾置NULL

 

#include
#include
using namespace std;
//Definition for singly - linked list.
struct ListNode {
	int val;
	ListNode *next;
	ListNode(int x) : val(x), next(NULL) {}
};
ListNode *deleteDuplicates(ListNode *head) {
	ListNode*ResultList = new ListNode(0);
	ListNode*TmpResultNode = ResultList;
	ListNode*NorepeatNode = head;
	while (NorepeatNode != NULL){
		ListNode*PreNode = NorepeatNode;
		while (NorepeatNode->next != NULL&&NorepeatNode->val == NorepeatNode->next->val)
			NorepeatNode = NorepeatNode->next;
		if (NorepeatNode == PreNode)  //如果不重復,插入
		{
			TmpResultNode->next = NorepeatNode;
			TmpResultNode = TmpResultNode->next;
		}
		NorepeatNode  = NorepeatNode  -> next;
	}
	TmpResultNode->next = NULL;       //尾部置NULL
	return ResultList->next;
}


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved