朝陽科技大學資管系 李麗華 第四章 鏈結串列 Linked List Fools look to tomorrow, wise men use tonight.

Slides:



Advertisements
Similar presentations
Installment 7 Tables With No Column Presented by rexmen 2001 資管所.林彥廷.
Advertisements

FCU, Department of ECE, IC Design Research Lab. TEL: # 4945 Pre-SIm , Post-Sim.
Divide-and-Conquer. 什麼是 divide-and-conquer ? Divide 就是把問題分割 Conquer 則是把答案結合起來.
6-1 指標簡介 6-2 指標與陣列 6-3 動態配置記憶體 6-4 本章綜合練習
1 Chemical and Engineering Thermodynamics Chapter 2 Conservation of mass and energy Sandler.
Introduction to Java Programming Lecture 13 Classes I OO Programming.
Reference, primitive, call by XXX 必也正名乎 誌謝 : 部份文字取於前輩 TAHO 的文章.
Courses Selection Guide 選 課 ( Powered by NCCU Student Ambassadors )
What is static?. Static? 靜態 ? class Test { static int staticX; int instanceX; public Test(int var1, int var2) { this.staticX = var1; this.instanceX =
Chapter 4 教學軟體融入教學  教學軟體有哪幾大類 ? 可以如何在教學上被 應用 ? 各有什麼優缺點 及使用要領 ?  教學軟體是是一種輔工具 能不能發揮功用取 決於教師如何運用 ( 淑珠 ) 以你認教科目 你覺 得哪些教學軟體可以配合你的教學需要 ? 你 要如何運用 ?  你對反覆練習軟體和遊戲軟體的看法.
Review of Chapter 3 - 已學過的 rules( 回顧 )- 朝陽科技大學 資訊管理系 李麗華 教授.
Graph V(G 1 )={0, 1, 2, 3, 4, 5, 6, 7, 8, 9} E(G 1 )={(0, 2), (0, 3), (1, 4), (2, 3), (2, 5), (2, 6), (3, 6), (3, 7), (4, 7), (5, 6), (5,
第一章 變數、常數及資料型態. 變數 C 程式語言的變數名稱 第一個字必須是英文字母或底線 (_) 之後可以是數字, 英文字母或底線 (_) 不可以是保留字 例: Num (Ο) _score (Ο) C&C (X) 8num (X)
數位教材製作與經驗分享研討會 同步遠距教學與數位教材製作 Jan 21, 2008 朱繼農 資訊管理系.
Last modified 2004/02 An Introduction to SQL (Structured Query Language )
STAT0_sampling Random Sampling  母體: Finite population & Infinity population  由一大小為 N 的有限母體中抽出一樣本數為 n 的樣 本,若每一樣本被抽出的機率是一樣的,這樣本稱 為隨機樣本 (random sample)
1. 假設以下的敘述為一未提供 “ 捷徑計算 ” 能力的程式段,試用程 式設計的技巧,使此敘述經此改 寫的動作後,具有與 “ 捷徑計算 ” 之 處理方法相同之處理模式。 if and then E1 else E2 endif.
JAVA 程式設計與資料結構 第十四章 Linked List. Introduction Linked List 的結構就是將物件排成一列, 有點像是 Array ,但是我們卻無法直接經 由 index 得到其中的物件 在 Linked List 中,每一個點我們稱之為 node ,第一個 node.
平均值檢定 假設 檢定 One Sample 平均值 是否為 u. One Sample—1 工廠甲過去向 A 公司購買原料, 平均交貨日約為 4.94 日, 標準差 現在 A 公司改組, 甲工廠繼續向 A 公司 購買, 隨機抽取 8 次採購, 平均日數為 4.29 日, 請問 A 公.
第三章 變數與繫結 陳維魁 博士 儒林圖書公司. 2 大綱  變數的定義  變數元件  儲存區配置問題  參考的透明性  完全計算  捷徑計算  繫結 (binding)  繫結時間  精選習題.
8.1 何謂高度平衡二元搜尋樹 8.2 高度平衡二元搜尋樹的加入 8.3 高度平衡二元搜尋樹的刪除
優、缺點平衡表.
2009fallStat_samplec.i.1 Chap10 Sampling distribution (review) 樣本必須是隨機樣本 (random sample) ,才能代表母體 Sample mean 是一隨機變數,隨著每一次抽出來的 樣本值不同,它的值也不同,但會有規律性 為了要知道估計的精確性,必需要知道樣本平均數.
第 1 章 PC 的基本構造. 本章提要 PC 系統簡介 80x86 系列 CPU 及其暫存器群 記憶體: Memory 80x86 的分節式記憶體管理 80x86 的 I/O 結構 學習組合語言的基本工具.
Introduction to pointers in C/C++. Pointers 特殊變數 存放變數在記憶體中的位址 MinGW C++ 中佔用 4 bytes 間接定址取執法 位址 指標變數 變數內容 變數.
Introduction to Java Programming Lecture 17 Abstract Classes & Interfaces.
第九章 結構. 結構的宣告 結構 它是由許多不同 ( 或相同 ) 資料型態的變數所組成的 集合,通常利用結構標籤稱呼此集合 struct student { char *name; int score; }; struct 為保留字,表示結構的宣告開始 結構項目需定義於大括號「 { } 」內 結尾需加上分號.
: The largest Clique ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11324: The largest Clique 解題者:李重儀 解題日期: 2008 年 11 月 24 日 題意: 簡單來說,給你一個 directed.
台灣客家知識治理之研究 -- 以 行政院客委會為例 發表人: 彭安麗 南華大學公共行政與政策研究所助理教授 發表人: 彭安麗 南華大學公共行政與政策研究所助理教授
Chapter 12 Pointers and Dynamic Arrays. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. Slide 2 Overview Pointers (12.1) Dynamic Arrays.
Chapter 2 Getting Started Insertion Sort: 能有效率地排序小數字的演算法 範例 :
大華技術學院九十三學年度 下學期 資工系資料結構教學大綱 吳弘翔. Wu Hung-Hsiang2 科目名稱:資料結構 適用班別:進修部二年級 授課老師:吳弘翔 修別:必修 老師信箱:
第十章 再論結構. 指標與結構的關係 /* File name: ex10-1a.c */ #include int main() { struct student { char *name; int score; }; struct student st= {"Brian", 97}; struct.
短缺,盈餘與均衡. 遊戲規則  老師想出售一些學生喜歡的小食。  老師首先講出價錢,有興趣買的請舉手。
: Multisets and Sequences ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11023: Multisets and Sequences 解題者:葉貫中 解題日期: 2007 年 4 月 24 日 題意:在這個題目中,我們要定義.
- Calculus & It’s Application- Chapter 2 Introduction to Limits 朝陽科技大學 資訊管理系 李麗華 教授.
Waves in string using Diamond rule and Mathematica software
資料結構實習-一 參數傳遞.
法律系 系所科助之血淚辛酸史 劉蕙綺. 系上推行困難處 ( 學期初 ) 傳統習慣:法律系以教科書為主 很多老師沒有電子檔案 專、兼任老師使用平台的意願 因老師多為資深老師,因此在使用電腦部 份可能比較需要幫助 通常學生知道訊息的來源是藉由 BBS 或者 是系上的系板,使用意願會降低.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2008.
4 堆疊與佇列 4.1 前言 四種基本的資料結構 (可儲存資料的容器) 陣列 (Array)、串列(List): 最基本
Section 4.2 Probability Models 機率模式. 由實驗看機率 實驗前先列出所有可能的實驗結果。 – 擲銅板:正面或反面。 – 擲骰子: 1~6 點。 – 擲骰子兩顆: (1,1),(1,2),(1,3),… 等 36 種。 決定每一個可能的實驗結果發生機率。 – 實驗後所有的實驗結果整理得到。
Teacher : Ing-Jer Huang TA : Chien-Hung Chen 2015/6/25 Course Embedded Systems : Principles and Implementations Weekly Preview Question CH 2.4~CH 2.6 &
JAVA 程式設計與資料結構 第二十章 Searching. Sequential Searching Sequential Searching 是最簡單的一種搜尋法,此演 算法可應用在 Array 或是 Linked List 此等資料結構。 Sequential Searching 的 worst-case.
2010 MCML introduction 製作日期: 2010/9/10 製作人 : 胡名霞.
-Antidifferentiation- Chapter 6 朝陽科技大學 資訊管理系 李麗華 教授.
逆向選擇和市場失調. 定義  資料不對稱 在交易其中,其中一方較對方有多些資料。  逆向選擇 出現在這個情況下,就是當買賣雙方隨意在 市場上交易,與比較主動交易者作交易為佳 。
845: Gas Station Numbers ★★★ 題組: Problem Set Archive with Online Judge 題號: 845: Gas Station Numbers. 解題者:張維珊 解題日期: 2006 年 2 月 題意: 將輸入的數字,經過重新排列組合或旋轉數字,得到比原先的數字大,
Chapter 10 m-way 搜尋樹與B-Tree
演算法課程 (Algorithms) 國立聯合大學 資訊管理學系 陳士杰老師 Course 7 貪婪法則 Greedy Approach.
23802 兒童成長與護理 兒童成長與護理專題講座 講者:方向敏. 在了解孩子在生理、心理及 社交上的成長過程及 會面對的問題後, 更能有效地掌握 與孩子相處之道, 共同建立愉快健康的家庭。
憂鬱小王子抗逆之旅 Class One - 關於憂鬱小王子抗逆之旅. 目的:向同學介紹「憂鬱小王子抗逆之旅」這個課程 目標: 認識「憂鬱小王子抗逆之旅」課程的作用 學習參與這個課程應有的行為.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2009.
2 C++ 程式概論 2.1 C++ 程式結構 程式註解 // 插入標題檔 #include 2-3
線上寫作之語音評閱 – 以中央大學進修英文課程中 之「寫作報告」為例 中央大學語言中心 劉詠華 January 22, 2007.
中序轉後序 藉由由左向右掃瞄中序運算式產生後序運算式,遇到 運算元就直接輸出,遇到運算符號則先存入堆疊,將 優先權較高者輸出。 範例: a + b * c TokenStack [0] [1] [2] topoutput aa ++0a b+0ab *+ *1ab c+ *1abc eosabc*+
連續隨機變數 連續變數:時間、分數、重量、……
Knowledge Management System -for Agenda 顏亦笛 陳靖宜 指噵教授 : 劉寶均教授 指噵公司 : 安捷達.
函式 Function 東海大學物理系‧資訊教育 施奇廷. 函式簡介 當程式越來越大、越複雜時,程式的維護、 除錯會變得更困難,此時必須引入函式來 簡化程式或將程式分段,將程式重複的部 分改寫為函式,將程式「模組化」 這種作法有下列優點:節省程式發展的時 間、邏輯容易瞭解、程式容易除錯、可分 工合作完成程式.
-Artificial Neural Network- Matlab操作介紹 -以類神經網路BPN Model為例
Visual C++重點複習.
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 參 資料蒐集的方法.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2010.
數字系統與資料表示法 教師: 陳炯勳 數系轉換 r進制數字 稱為 base r或 radix r 有r個計數符號,計數順序逢r歸零(進位) A n A n - 1 ‥‥A 2 A 1 A 0 ﹒A -1 A -2 ‥‥A -m 其中A n 及A.
Microsoft Excel.
Introduction to Java Programming Lecture 16 Super and Sub Classes.
幼兒行為觀察與記錄 第八章 事件取樣法.
1 Introduction to Java Programming Lecture 3 Mathematical Operators Spring 2009.
第 1 章 PC 的基本構造. 本章提要 PC 系統簡介 80x86 系列 CPU 及其暫存器群 記憶體: Memory 80x86 的分節式記憶體管理 80x86 的 I/O 結構 學習組合語言的基本工具.
啤酒遊戲- 供應鍊模擬 Dr. CK Farn 2006 Spring. 中央大學。范錚強 2 模擬設定 過度簡化的供應鍊 銷售桶裝啤酒 角色 工廠(倉庫) 配銷商 大盤商 零售商.
Presentation transcript:

朝陽科技大學資管系 李麗華 第四章 鏈結串列 Linked List Fools look to tomorrow, wise men use tonight.

李麗華 -- 資料結構講義 練功前的沉思 Q1: Remember the pointer in C? Q2: What is linked list? Q3: What is single linked list? Q4: What is circular linked list? Q4: How to implement linked list using C? Q5: What is the difference between linked list and array? ( 優缺點 ) Q6: When do I apply linked list to solve problems? Q7: Do you aware any problem for link list?

李麗華 -- 資料結構講義 Review of Pointer in C The pointer data type in C means the data stores the address that this address points to other data with the same type). EX: int i, *ptr, *p ; i=10 ; ptr = &i ; p= (int *) malloc(sizeof(int)) ; *p = 1024 ; printr(“i=%d, *ptr=%d, *p=%d ”, i, *ptr, *p) free(p); 將記憶體釋回 10 i FFF0 ptr FFF2 address ? p FFF A 取得記憶體

李麗華 -- 資料結構講義 What is linked list? Def: A link list is a dynamic allocating list in which data is stored in a node and pointer(s) is used to indicate the position of the list. Characteristics: 1. The list is a dynamically allocated structure. 2. The size of the storage do not need to be declared in advance. 3.Dynamically create/dispose the node when a node is inserted/deleted. 4.Insertion and deletion can be done without any order. node data ptr

李麗華 -- 資料結構講義 The data structure of a node Example of a node declared in C: struct node { int data; <-- 資料型態可自訂 struct node *next; } Initialize a linked list, i.e., head = tail = NULL; head -> link = NULL; tail -> link = NULL head next NULL 若指標指向 NULL, 有時亦可畫成 : data next 放資料內容 放指標 Create a node: x=(struct node *)malloc(sizeof(struct node)); 名稱自訂, 例如可叫 head,tail,ptr,x,y,z, …

李麗華 -- 資料結構講義 Single Linked List A single linked list is a dynamic allocated list where nodes are linked by one way pointer. Insertion and deletion of a node can be done in any position of a list. Head DOGCATBIRDBATAPE Tail

李麗華 -- 資料結構講義 Insert a node to the sorted list (1) 1. Get the memory for the new node x=(struct node *)malloc(sizeof(struct node)); x = num; ( 設 x 內存放某一數值 num) x->next = NULL ; 2. To insert a node in a sorted list, we search the list from “ head ” and find the right position. Three possible positions are considered. (1) insert to the head (2) insert to the middle (3) insert to the tail Insert to the head x->next = head ; head = x; Head Tail 10 x

李麗華 -- 資料結構講義 Insert a node to the sorted list (2) Insert to the tail tail->next = x ; tail = x; Head Tail 500 x Insert to the middle cur = head; while(x->data > cur->data) { pre = cur ; cur = cur -> next; } x->next = cur; pre -> next = x; Head Tail 250 x cur pre

李麗華 -- 資料結構講義 Delete a node from the sorted list (1) 1. Find the node in the list. Deletion should be taken care in three different positions. (1) Delete from head (2) Delete from middle (3) Delete from tail 2. When found the node, adjust the link and dispose the node. Dispose a node p: free(p) ; Delete from head: p = head ; head = head->next; free(p); Delete from tail: p = head ; while(p->next != tail) p = p ->next; p ->next = NULL; free(tail) ; tail = p;

李麗華 -- 資料結構講義 Delete a node from the sorted list (2) Delete a node in the middle cur = head; while(cur->next != NULL) { pre = cur ; cur = cur -> next; if (x->data == cur->data) { pre->next = cur->next; free(cur); } 令欲刪除 x->data=300 Head Tail 400 precur

李麗華 -- 資料結構講義 Join Two Lists Join x & y list into Z: struct node *c; if (x==NULL) z = y ; 當 x 的 list 為空 else if (y==NULL) z = x ; 當 y 的 list 為空 else { z = x ; c = x ; while(c->next!=NULL) c = c -> next; c -> next = y; } x y z

李麗華 -- 資料結構講義 Invert a List Invert a list: struct node *cur,*pre,*nex; nex = head; cur = NULL; while(nex != NULL) { pre = cur; cur = nex; nex = nex -> next cur-> next = pre; } tail = head; head = cur; HeadTail nex HeadTail HeadTail HeadTail pre HeadTail cur nex pre cur nex

李麗華 -- 資料結構講義 Circular List Def: A circular list is a list with its tail points to the head. Head Tail Insert node x to head When list is empty head=x; tail=x; x->next = x; Insert node x to head When list is not empty x->next = head; tail -> next = x; head=x; head x tail head x tail head

李麗華 -- 資料結構講義 Circular List Operation Insert node x to tail tail -> next = x; x->next = head; tail = x; Delete node p from head p = head; head = head -> next; tail -> next = head; free(p); Delete node p from tail p = head; while(p->next != tail) p= p-> next; p -> next = head; free(tail); tail = p; Delete node p from middle 做法與一般串列相同 請參考前面內容

李麗華 -- 資料結構講義 Join Two Circular Lists Join A & B circular list Atail -> next = Bhead; Btail -> next = Ahead; Ahead Atail Bhead BtailAhead Atail Bhead Btail

李麗華 -- 資料結構講義 Double Linked List The problem of single linked list is that the search can only be done through one way pointer. The double linked list is a type of circular list in which each node contains two way pointers. pre data next 放左指標 放資料 放右指標 Head Tail 10 struct node { int data ; <-- 資料型態可自訂 struct node *pre ; struct node *next ; }

李麗華 -- 資料結構講義 Double Linked List Operation(1) Insert node x to head When double linked list is empty head=x; tail=x; x->next = x; Insert node x to head When double linked list is not empty x->next = head; tail -> next = x; head=x; head x tail head x tail head

李麗華 -- 資料結構講義 Double Linked List Operation(2) Insert node x to tail tail -> next = x; x->next = head; tail = x; Delete node p from head p = head; head = head -> next; tail -> next = head; free(p); Delete node p from tail p = head; while(p->next != tail) p= p-> next; p -> next = head; free(tail); tail = p; Delete node p from middle 做法與一般串列相同 請參考前面內容

李麗華 -- 資料結構講義 Application—Stack & Queue

李麗華 -- 資料結構講義 Polynomial Addition

李麗華 -- 資料結構講義 大師 — 該動動腦囉 !! 第 1 題, 第 3 題 請寫出 double linked list 及 circular linked list 的反轉串列 之演算法. 回家動動腦 上課來發表 你知道 Linked List 的問題嗎 ? -- 如果不小心沒有將 pointer 處理好, 會產生哪些問題 ?? -- 如果忘了 free(ptr), 又會有什麼問題 ?? -- 如果指標指錯了, 又可能產生哪些問題 ??

李麗華 -- 資料結構講義 Worry is like a rocking chair--it will give you something to do but it won’t get you anywhere. 煩惱好像讓你的腦袋有事做, 但卻無法幫助你解決事情