歸併具體實現(二)--鏈式表示
線性表的鏈式表示:
typedef struct LNode {
ElemType data;
struct LNode *nxt;
}LNode,*LinkList;
建立連結串列:
實際,我覺得這塊不加&也行,只不過呼叫前需將所要建立的節點進行初始化。void createList(LinkList &L,int n){ L = (LinkList)malloc(sizeof(LNode)); L->nxt = NULL; for (int i = 0; i < n; i++){ LinkList p = (LinkList)malloc(sizeof(LNode)); scanf_s("%d",&p->data); p->nxt = L->nxt; L->nxt = p; } }
我的理解,一般而言,加一個&,就相當於引用一般,這函式裡改變後其他函式也會相應改變。
歸併:
void mergeList(LinkList& La, LinkList& Lb, LinkList & Lc){ LinkList p = La->nxt; LinkList q = Lb->nxt; Lc = La; LinkList m = Lc; while (p&&q){ if (p->data<=q->data) { m->nxt = p; m = p; p = p->nxt; } else { m->nxt = q; m = q; q = q->nxt; } } m->nxt = p ? p : q; free(Lb); }
這裡面,在mergeList函式裡引數裡使用的是&La,&LB,則此函式中free(Lb),也相當於對所對應主函式裡的引數進行釋放空間了,然而,嘗試了去掉其中的&即mergeList(La,Lb,&Lc),依然能對所對應主函式裡的引數進行釋放空間,這是怎麼一回事???如果有大神無意看到了,還望解答。 總程式:
其中,資料形成的節點是依次插入到表頭的,故,輸入應該為按非遞增的順序,或將建立連結串列的程式改為插入表尾的#include<stdio.h> #include<stdlib.h> typedef int ElemType; typedef struct LNode { ElemType data; struct LNode *nxt; }LNode,*LinkList; void createList(LinkList &L,int n){ L = (LinkList)malloc(sizeof(LNode)); L->nxt = NULL; for (int i = 0; i < n; i++){ LinkList p = (LinkList)malloc(sizeof(LNode)); scanf_s("%d",&p->data); p->nxt = L->nxt; L->nxt = p; } } void mergeList(LinkList& La, LinkList& Lb, LinkList & Lc){ LinkList p = La->nxt; LinkList q = Lb->nxt; Lc = La; LinkList m = Lc; while (p&&q){ if (p->data<=q->data) { m->nxt = p; m = p; p = p->nxt; } else { m->nxt = q; m = q; q = q->nxt; } } m->nxt = p ? p : q; free(Lb); } int main(){ LinkList La,Lb; createList(La, 4); createList(Lb, 7); LinkList Lc; mergeList(La, Lb, Lc); return 0; }
相關推薦
歸併具體實現(二)--鏈式表示
線性表的鏈式表示:typedef struct LNode { ElemType data; struct LNode *nxt; }LNode,*LinkList;建立連結串列: void cr
Flume抽取SQL Server設計方案具體實現(二)觸發器
上一篇將瞭如何使用Flume收集SQL server Board中的新增資料進行處理,如下針對更新的資料進行分析需求:對Board表更新的資料進行處理1.建立一個存更新資料的表Tri_Board_Update,表結構基本和原表機構一樣,但需要新增Update_id(唯一標識列
Hadoop網盤具體實現(二)
Hadoop 環境搭好之後,我嘗試了實現一個 Hadoop 網盤的小專案,使用 Java 的 api,你也可以選擇其他的。經過修改,網盤頁面具體的效果如下。 實現了檔案的上傳,下載,刪除,使用者登入到自己的資料夾進行簡易的檔案管理。 一、這裡我的前期準備
Java常用的八種排序演算法與程式碼實現(二):歸併排序法、快速排序法
注:這裡給出的程式碼方案都是通過遞迴完成的 --- 歸併排序(Merge Sort): 分而治之,遞迴實現 如果需要排序一個數組,我們先把陣列從中間分成前後兩部分,然後對前後兩部分進行分別排序,再將排好序的數組合並在一起,這樣整個陣列就有序了 歸併排序是穩定的排序演算法,時間
Html靜態網頁的實現——(二)之傻瓜式教程
上次說到Html5中無法換行的問題 <body> <p>把文字輸入到這裡</p> <p>把文字輸入到這裡</p> </body> 看看執行結果 這下是不是就換行了 格式:<p a
佇列的物理實現(順序佇列+鏈式佇列)
說明 基於順序表實現的順序佇列 基於連結串列實現的鏈式佇列 一、說明 本文基於順序表實現的順序佇列中,陣列的大小為n+1,但只儲存n個元素,方便區分滿佇列和空佇列;基於連結串列實現的鏈式佇列中,front始終指向頭結點(資料域為空),rear指向佇列的尾結點(資料域不為
棧的物理實現(順序棧+鏈式棧)
說明 基於順序表實現的順序棧 基於連結串列實現的鏈式棧 一、說明: 本文中基於順序表實現的順序棧中top指的是棧中第一個空閒位置,基於連結串列實現的鏈式棧中top指向鏈式棧中第一個結點(棧頂)的指標,無頭結點。 二、基於順序表實現的順序棧 Stack.h #inc
C語言:單鏈表實現(二) 就地逆置,就地歸併
#include<iostream> #include<stdio.h> #include<math.h> #define LEN sizeof(struct Nodelist) using namespace std; typedef
STL之set具體解釋(二)
基本操作 二叉樹 mono itl 自己 pair leading 左右子樹 ews 首先來看看set集合容器: set集合容器實現了紅黑樹的平衡二叉樹數據結構。在插入元素時它會自己主動調整二叉樹的排列,把該元素放到適當的位置,而且 保證左右子樹平衡。平衡二
Dji Mobile SDK 基礎實現(二)
stat one 透傳 pub != exceptio rom tick ann Dji Mobile SDK 基礎實現(二) 本文簡要介紹如何通過調用DJI Mobile SDK,實現獲取和釋放無人機的控制權限、模擬遙控器按鈕控制無人機的飛行、獲取無人機的回傳視頻、獲取
Service具體解釋(二):Service生命周期
art views parent con 周期 使用 down append ini 《 Service具體解釋(一):什麽是Service》 《 Service具體解釋(二):Service生命周期》 《Service具體解釋(三):Service
redis 數據結構基礎 (二) 鏈表
ear 數據結構 dup 設計 pty ndt 萬能 div 語言 redis中的鏈表恐怕是最簡單的數據結構了,redis鏈表中總共有3個數據結構: listNode: 1 typedef struct listNode { 2 struct listNode *
實現自定義查詢的數據庫設計及實現(二)
表名 table abr bigint sts 處理 update 關聯表 creat 上部分大概講了一下表設計,這部分講一下處理。 處理的結構 處理結構的內容比較多,分為幾個部分分別講解一下。首先講解一下尋找關系表。 尋找關系表 尋找關系表根據“表間關系登記表”進行處
數據結構(二)鏈表
形式 時間 資源 結構 實現 線性 插入 一個數 簡單 一、表的常見操作 對於一個鏈表,某個元素有其前驅和後繼。對表的操作:find返回關鍵字首次出現的位置;insert和delete插入和刪除某個元素;findkth返回某個位置上的元素;二、表的簡單數組實現 定
KVM虛擬化的四種簡單網絡模型介紹及實現(二)
str drive 51cto -c water -a return dfa 模型 接上篇,介紹NAT網絡模型和橋接模型。 三、NAT模型 NAT模型其實就是SNAT的實現,路由中虛擬機能將報文發送給外部主機,但是外部主機因找不到通往虛擬機的路由因而無法回應請求。但是外部
SpringBoot在Kotlin中的實現(二)
文件中 open 代碼 rabl delete ons list any data 根據現在的開發模式和網上的一些資料,SpringBoot需要對業務和操作進行分層,通常分為controller、entity、service、respository等結構。下面以Kotlin
【原始碼剖析】tornado-memcached-sessions —— Tornado session 支援的實現(二)
客官您終於回頭了!讓我們本著探(zuo)索(si)精神把 session.py 看完吧... 首先看看需要的庫: pickle 一個用於序列化反序列化的庫(聽
資料結構實現(二):陣列棧(C++版)
資料結構實現(二):陣列棧(C++版) 1. 概念及基本框架 2. 基本操作程式實現 2.1 入棧操作 2.2 出棧操作 2.3 查詢操作 2.4 其他操作 3. 演算法複雜度分析 3.1 入棧
基於IE核心的多媒體檔案視覺化程式實現(二)
文章目錄 使用命令列引數 命令列引數獲取和解析程式碼 幫助系統 執行測試 WSEE的功能還不只如此 現在的結果 上回說道,我們需要使用命令列引數方法將要瀏覽的檔名傳入wsee.exe 程式,然後由
中小型園區網路的設計與實現 (二)
寫論文第二天 想要用心去寫一篇論文,首先要讀懂論文的要求 根據論文指導找出詳細的思路(論文的基本要求) 思路:①中小型區域網,500-1000臺計算機組成的一個網路。 ②網路型別是“園區網”,包括企業網、校園網等多種形式。園區網有一定的地理分佈範圍,不要簡單的一個辦