1. 程式人生 > >寫正確函式需要注意的地方:兩個非降序連結串列的並集,1>2>3和2>3>5合併為1>2>3>5。

寫正確函式需要注意的地方:兩個非降序連結串列的並集,1>2>3和2>3>5合併為1>2>3>5。

int OutCombine(Node* p1, Node* p2)
{
	while(p1!=NULL && p2!=NULL)
	{
		if(p1->value>p2->value)
		{
			cout<<p2->value<<" ";
			p2=p2->pNext;
		}
		else if(p1->value<p2->value)
		{
			cout<<p1->value<<" ";
			p1=p1->pNext;
		}
		else
		{
			cout<<p1->value<<" ";
			p1=p1->pNext;
			p2=p2->pNext;
		}
	}
	if(p1!=NULL)//剩餘的部分直接新增到末尾。 
	{
		while(p1!=NULL)
		{
			cout<<p1->value<<" ";
			p1=p1->pNext;
		}
		cout<<endl;
	}
	else if(p2!=NULL)
	{
		while(p2!=NULL)
		{
			cout<<p2->value<<" ";
			p2=p2->pNext;
		}
		cout<<endl;
	}
	return 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
	srand(time(0));

	int plength1=rand()%10;
	int plength2=rand()%10;

	Node* p1=NULL;
	Node* p2=NULL;
	int startvaluep1=0;
	int startvaluep2=0;

	for(int i=0;i<plength1;++i)
		addEnd(startvaluep1=rand()%3+startvaluep1,p1);
	
	for(int i=0;i<plength2;++i)
		addEnd(startvaluep2=rand()%3+startvaluep2,p2);

	print(p1);
	print(p2);
	OutCombine(p1,p2);

	getchar();
	return 0;
}

相關推薦

正確函式需要注意地方連結串列1>2>32>3>5合併1>2>3>5

int OutCombine(Node* p1, Node* p2) { while(p1!=NULL && p2!=NULL) { if(p1->value>p2->value) { cout<<p2->

劍指offer-輸入單調遞增的連結串列輸出連結串列合成後的連結串列當然我們需要合成後的連結串列滿足單調不減規則

既然是有序連結串列,可以考慮使用分治思想,實現程式碼如下:/* public class ListNode { int val; ListNode next = null; L

劍指offer--輸入單調遞增的連結串列輸出連結串列合成後的連結串列當然我們需要合成後的連結串列滿足單調不減規則

合併兩個有序連結串列是一道很常見的提醒,可以利用分治思想用遞迴實現,或者是不用遞迴,遞迴比較難理解。下面給出非遞迴的方法。 /* public class ListNode { int val

python算法雙指針問題有序數組的合

=== 分割線 實現 == 自己的 lis pri finish sts 最近在看《你也能看得懂的python算法書》, 自己來實現一下裏面的算法吧。 有書裏的有所不同。 比如這個題目,我的實現如下: from django.test import TestCa

遞增的有序連結串列合併一個遞增的有序連結串列要求結果連結串列扔使用原來連結串列的儲存空間不另外佔用其他的儲存空間表中不允許有重複的資料

語言:C++ #include <iostream> using namespace std; typedef struct LNode { int data; LNode *next; }LNode,*LinkList; //建立連結串列 int CreateList(Li

合併單鏈表(連結串列方式)

假設頭指標為La、Lb單鏈表分別為線性表LA、LB的儲存結構,現在要合併La、Lb得到單鏈表Lc void MergeList_L(LinkList La, LinkList Lb, LinkList Lc){ //已知La、Lb的元素按值非遞減排列 //歸併La、Lb得到單鏈表Lc,

Leetcode篇k一組翻轉連結串列

@author: ZZQ @software: PyCharm @file: ReverseList.py @time: 2018/11/6 15:13 題目要求:給出一個連結串列,每 k 個節點一組進行翻轉,並返回翻轉後的連結串列。 k 是一個正整數,它的值小於或等於連結串列的長度。如果節點總數不是 k

leetcodek一組翻轉連結串列

題目說明:給出一個連結串列,每 k 個節點一組進行翻轉,並返回翻轉後的連結串列。 k 是一個正整數,它的值小於或等於連結串列的長度。如果節點總數不是 k 的整數倍,那麼將最後剩餘節點保持原有順序。 示例 : 給定這個連結串列:1->2->3->4->5 當 k

LeetCode 21 Merge Two Sorted Lists(合併已排序的連結串列)(Linked List)

翻譯 合併兩個排好序的連結串列,並返回這個新連結串列。 新連結串列應該由這兩個連結串列的頭部拼接而成。 原文 Merge two sorted linked lists and return it as a new list. The new

C++實現已經排序的連結串列進行合併

//定義兩個同種單向連結串列,包含一個整數值和一個指向本節點的型別的指標,該連結串列中的資料都已經排好序 //編制程式,合併兩個連結串列 #include<iostream.h> #include<iomanip.h> struct Node {in

LeetCodet題解--21. Merge Two Sorted Lists(合併排序好的連結串列

連結 題意 Merge two sorted linked lists and return it as a new list. The new list should be

有序的單向連結串列整合成一個有序單向連結串列

題目:將兩個有序的單向連結串列整合成一個新的有序單向連結串列。 以小到大有序基準的單向連結串列,演算法原理: 1、取連結串列A,連結串列B 各自頭節點進行比較,確定新連結串列的頭節點。 2、若取的是連結串列A的節點,取出連結串列A該節點的下一節點與B連結串

合併已有序(升序)連結串列的操作!

問題:現有LA與LB兩個連結串列,已升序排列。將LA與LB合併後也按升序排列. 演算法1:在LB中分別取出它的結點,再分別與LA中的節點進行比較,找到位置後插入。但是這種演算法複雜度太大,假如LA與

已排序的連結串列歸併成一個連結串列(C++面試題)

題目: 將兩個已經排好序的連結串列組合成一個排序的連結串列。 /* 歸併排序的思想 時間:2015年4月8日 19:59:02 */ #include <iostream> #include <cstdlib> using namespace

各自有序的連結串列合成一個有序的連結串列

方法一: Node *Merge(Node *head1, Node *head2) { if(head1 == NULL) { return head2; }

使用file_get_contents函式需要注意地方

在工作過程中,有一次用到file_get_contents函式來獲取微信使用者的openid,如下圖所示。 然後同事提醒需要設定超時時間,就網上查了下相關資料,總結如下: 從php5開始,file_get_contents已經支援context了,也就是說,從

Sybase數據庫特別註意的地方

align 成功 包含 新的 數據 別名 地方 ase base Sybase數據庫:兩個特別註意的地方 一、字段別名   字段別名不能為查詢條件中的列名,會導致查詢出來的數據不準確;最好字段別名為非列名; 二、更新的表名的大小寫   update a set .... s

網頁內容需要注意些什麼?

網頁內容是寫給誰看得?         這個問題不是客戶問我的,而是我提出的。對這個問題的理解和把握,可以看出你對SEO的認識程度。         或許很多網站設計者會毫不猶豫地說:“網頁內容,當然是給使用者看的呀”。其實,這是第一代網站建設的思維,已經落伍了很多年。第三代SEO網站建設思

STL自定義排序函式 需要注意的問題

1.例子    先舉個例子:分析一下程式的執行結果:看看在三種情況下程式的輸出分別是什麼,有可能出現異常 //////////////////////////////////////////////////// #pragma once #include  #include