(Circular Linked Lists)

Slides:



Advertisements
Similar presentations
資料結構 – 鏈結串列 Linked List 綠園. 鏈結串列 -Linked List Linked List 是由許多相同資料型態的項目所組 成的有限序列。 可以把鏈結串列想像成火車,有多少人就只掛多 少節的車廂,需要車廂時再跟系統要一個車廂, 人少了就把車廂還給系統。 鏈結串列是有多少資料用多少記憶體空間,有新.
Advertisements

“三生教育”专题 生命·生存·生活.
第7章 樹與二元樹 (Trees and Binary Trees)
第一单元 走进化学世界 课题 1 化学使世界变得更加绚丽多彩.
寻觅节日诗情.
第三章 鏈結串列 Linked List.
第三章 鏈結串列 Linked Lists.
计算机硕士专业基础—C语言 赵海英
C语言实现俄罗斯方块 邓友明( ) 胡文峰( ) 李乐( ) 李博( )
前不久看到了这样一则报道:某个大学校园里,一个大学生出寝室要给室友留一张字条,告诉他钥匙放在哪里。可是“钥匙”两个字他不会写,就问了其他寝室的同学,问了好几个,谁也不会写,没办法,只好用“KEY”来代替了。 请大家就此事发表一下自己看法。
利用共同供應契約 辦理大量訂購流程說明.
第4章 鏈結串列(Linked Lists) 4-1 動態記憶體配置-(6) 4-2 鏈結串列的基礎-(7)
Linked List Operations
單向鏈結串列 Singly Linked Lists.
第2章 线性表 线性结构 是一个数据元素的有序集合。.
第6章 佇列(Queues) 6-1 佇列的基礎 6-2 佇列的表示法 6-3 環狀佇列 6-4 雙佇列.
第7章 结构体、联合体和枚举类型 本章导读 本章主要知识点 《 C语言程序设计》 (Visual C++ 6.0环境)
資料結構 第3章 鏈結串列.
第4章 鏈結串列(Linked Lists) 4-1 動態記憶體配置 4-2 鏈結串列的基礎 4-3 單向鏈結串列 4-4 環狀鏈結串列
struct 可以在同一個名稱下擁有多種資料型態。使用struct能讓資料的存取和處理更為靈活。
佇列 (Queue).
資料結構設計與C++程式應用 Fundamentals of Data Structures and Their Applications Using C++ 第3章 佇列 資料結構設計與C++程式應用.
資料結構 第5章 佇列.
鏈結串列 (Linked List).
資料結構與演算法 第四章 鍵結串列 徐熊健.
第8章 圖形結構(Graphs) 8-1 圖形的基本觀念 8-2 圖形的表示法 8-3 圖形的走訪 8-4 擴張樹
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
4.1 單項鏈結串列 4.2 環狀串列 4.3 雙向鏈結串列 4.4 鏈結串列之應用
补充内容 结构体 概述 定义结构体类型和定义结构体变量 结构体变量的引用 结构体变量的初始化 指针与结构体 用typedef定义类型的别名.
Chapter 3 鏈結串列結構 資料結構導論 - C語言實作.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
·线性表的定义及ADT ·线性表的顺序存储结构 ·线性表的链接存储结构 · 单向循环链表 · 双链表、双向循环链表 · 一元多项式的加法
第12章 樹狀搜尋結構 (Search Trees)
資料結構與C++程式設計進階 鏈結串列 講師:林業峻 CSIE, NTU 6/ 10, 2010.
第十五章 Linked List, Stack and Queue
101北一女中 資訊選手培訓營 圖論基礎 Nan.
第2章 线性表 线性表抽象数据类型 顺序表 主要知识点 单链表 循环单链表 循环双向链表 静态链表 设计举例.
第十章 C高级程序应用—链表* 10.1链表的基本概念 10.2单向链表 10.3双向链表 10.4应用举例.
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
鏈結串列 (Linked List) 註:要會指標(Pointer)
第 六 章 鏈結串列(Link List) 課程名稱:資料結構 授課老師:________ 2019/1/2.
五、链 表 1、单链表 2、双向链表 3、链表应用.
Ch03 鏈結串列結構 淡江大學 周清江.
陈海明 副教授 信息学院 计算机系 电子信息类非计算机专业选修课 程序设计实践 陈海明 副教授 信息学院 计算机系
學習 2019/1/12. 學習 2019/1/12 Chapter 3 鏈結串列結構 資料結構導論 - C語言實作.
4.1 單向鏈結串列 4.2 堆疊的加入與刪除 4.3 佇列的加入與刪除 4.4 其他型式的佇列
第三章 鏈結串列 3-1  單向鏈結串列 3-2 環狀鏈結串列 3-3 雙向鏈結串列.
Chap3 Linked List 鏈結串列.
資料結構 優點 缺點 1 陣列 (Array) 沒有額外變量 (例head, next,...) 運作/操作較簡單 更新資料時,若要保持順序,需要移動較大量資料 靜態結構Static (宣告時已決定了陣列元素多少,不能在程式執行期間增減元素) 2 隊列Queue (FIFO) 容易更新 加入enqueue:
自我參考結構 (self-reference – 1)
第三章 链表 单链表 循环链表 多项式及其相加 双向链表 稀疏矩阵.
7.1 广义表的概念 广义表是n(n≥0)个数据元素组成的序列,其中每个数据元素或是单个数据元素(简称原子),或仍然是一个广义表 。
第五章 递归与广义表 递归的概念 递归过程与递归工作栈 递归与回溯 广义表.
資料結構與C++程式設計進階 實作練習 講師:林業峻 CSIE, NTU 6/ 24, 2010.
Linked Lists Prof. Michael Tsai 2013/3/12.
第7章 樹與二元樹(Trees and Binary Trees)
本教學投影片係屬教科書著作之延伸,亦受著作權法之保護。
樣版.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
兒童及少年保護、 家庭暴力及性侵害事件、 高風險家庭 宣導與通報
資料結構使用Java 第6章 鏈結串列(Linked List).
Chapter 4 鏈結串列 Linked List 2019/5/14.
資料結構 – 鏈結串列 Linked List 綠園.
第4章 鏈結串列(Linked Lists) 4-1 動態記憶體配置-(6) 4-2 鏈結串列的基礎-(7)
判斷(選擇性敘述) if if else else if 條件運算子.
鏈結串列 Link List chapter 6 德明科技大學資訊科技系.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
鏈結串列 (Linked List).
微 處 理 機 專 題 – 8051 C語言程式設計 主題:階乘計算
Presentation transcript:

(Circular Linked Lists) 環狀鏈結串列 (Circular Linked Lists)

定義 一個鏈結串列之最後一個節點指向鏈結串 列之最前端,則形成一個環狀鏈結串列, 如下圖所示:

基本運算與圖解

加入動作 加入節點於前端 當head = = NULL時 head = x; tail = x; x → next = x;

當head != NULL時 x → next = head; tail → next = x;

head= x;

加入節點於尾端 tail → next = x;

x → next = head; tail = x;

刪除動作 刪除節點於前端 tail → next = head → next; p = head; head =head → next ; free(p); head= x; 加入節點於尾端 tail → next = x; x → next = head; tail = x;

基本運算之演算法及程式

加入動作 void insert_node (struct node *ptr, struct node *head, struct node *tail) { struct node *prev; *this if (head = = NULL) { /*加入資料為第一筆 ptr -> next = ptr; head = ptr; tail = ptr; } this = head;

if (ptr ->key < this ->key) { /*加入前端 ptr -> next = this; head = ptr; tail -> next = head; } else { while (this -> next != head) ptr = this; this = this ->next;

if (ptr->key < this->key) { /*加入於特定節點*/ ptr ->next = this; prev ->next = ptr; break; } if (ptr->key >= tail->key) { /*加入尾端*/ ptr->next = head; this->next = ptr; tail = ptr;

刪除動作 計算環狀鏈結串列之長度 int Clength (NODE *CL ) /*此函數計算環狀鏈結串列之長度*/ { int num=0; NODE *p; if (p != CL) { p=CL; do { num ++; p = p->next; } while (p != CL); } return(num);