Linked List Operations

Slides:



Advertisements
Similar presentations
While 迴圈 - 不知重複執行次數
Advertisements

第7章 樹與二元樹 (Trees and Binary Trees)
“八皇后”问题 崔萌萌 吕金华.
数据结构概论 第2章 线性表 董黎刚 浙江工商大学信电学院
第三章 鏈結串列 Linked List.
计算机硕士专业基础—C语言 赵海英
第二章 线性表 1 线性表的逻辑结构及其基本操作 2 线性表的顺序存储结构 3 线性表的链式存储结构 4 静态链表 5 应用实例.
第二章 线性表.
第2章 线性表 2.1 线性表的概念及运算 2.2 线性表的顺序存储 2.3 线性表的链式存储 2.4 一元多项式的表示及相加.
資料結構與C++程式設計進階 資料結構概論 講師:林業峻 CSIE, NTU 6/ 7, 2010.
专题研讨课二: 数组在解决复杂问题中的作用
Linked List(串列) Why Linked List? Pointer Dynamic Allocation
第4章 鏈結串列(Linked Lists) 4-1 動態記憶體配置-(6) 4-2 鏈結串列的基礎-(7)
單向鏈結串列 Singly Linked Lists.
第6章 佇列(Queues) 6-1 佇列的基礎 6-2 佇列的表示法 6-3 環狀佇列 6-4 雙佇列.
第7章 结构体、联合体和枚举类型 本章导读 本章主要知识点 《 C语言程序设计》 (Visual C++ 6.0环境)
Introduction to the C Programming Language
C语言程序设计 课程 第5章 数组 主讲:李祥 博士、副教授 单位:软件学院软件工程系.
程式設計 博碩文化出版發行.
選擇排序法 通訊一甲 B 楊穎穆.
第11章 查找 主要知识点 查找的基本概念 静态查找表 动态查找表 哈希表.
佇列 (Queue).
資料結構 第5章 佇列.
第8章 圖形結構(Graphs) 8-1 圖形的基本觀念 8-2 圖形的表示法 8-3 圖形的走訪 8-4 擴張樹
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
补充内容 结构体 概述 定义结构体类型和定义结构体变量 结构体变量的引用 结构体变量的初始化 指针与结构体 用typedef定义类型的别名.
结构体和共用体 2 梁春燕 华电信息管理教研室.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
·线性表的定义及ADT ·线性表的顺序存储结构 ·线性表的链接存储结构 · 单向循环链表 · 双链表、双向循环链表 · 一元多项式的加法
第12章 樹狀搜尋結構 (Search Trees)
STRUCTURE 授課:ANT 日期:2010/5/12.
Ch.3 栈和队列 黄刘生 中国科学技术大学计算机系 国家高性能计算中心(合肥)
(Circular Linked Lists)
第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 堆疊的應用 - 運算式的計算與轉換
第3章 堆栈和队列 堆栈 堆栈应用 队列 队列应用 优先级队列 主要知识点.
第三章 栈和队列.
第 六 章 鏈結串列(Link List) 課程名稱:資料結構 授課老師:________ 2019/1/2.
資料結構與C++程式設計進階 堆疊與佇列(Stack & Queue) 講師:林業峻 CSIE, NTU 6/ 21, 2010.
第一章 绪论.
五、链 表 1、单链表 2、双向链表 3、链表应用.
陈海明 副教授 信息学院 计算机系 电子信息类非计算机专业选修课 程序设计实践 陈海明 副教授 信息学院 计算机系
第三章 栈和队列.
計數式重複敘述 for 迴圈 P
資料結構 第4章 堆疊.
樹 2 Michael Tsai 2013/3/26.
第三章 链表 单链表 (Singly Linked List) 循环链表 (Circular List) 多项式及其相加
第7章 陣列與指標 7-1 陣列的基礎 7-2 一維陣列的處理 7-3 二維與多維陣列的處理 7-4 陣列的函數參數
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
二叉树的遍历.
自我參考結構 (self-reference – 1)
第三章 链表 单链表 循环链表 多项式及其相加 双向链表 稀疏矩阵.
第五章 递归与广义表 递归的概念 递归过程与递归工作栈 递归与回溯 广义表.
Linked Lists Prof. Michael Tsai 2013/3/12.
第7章 樹與二元樹(Trees and Binary Trees)
本教學投影片係屬教科書著作之延伸,亦受著作權法之保護。
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第7章 程序的结构 四、生存期与存储属性 五、extern关键字与外部连接属性 六、static关键字与内部连接属性.
累堆排序法 (Heap Sort).
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第4章 鏈結串列(Linked Lists) 4-1 動態記憶體配置-(6) 4-2 鏈結串列的基礎-(7)
第三章 线性表 3.1 线性表的类型定义 3.2 顺序存储的线性表 3.3 链式存储的线性表 3.4 有序表 3.5 顺序表和链表的综合比较.
第7章 图.
資料!你家住哪裏? --談指標 綠園.
本节内容 1.二叉排序树的定义 2.二叉排序树的查找操作 3.二叉排序树的插入操作 4.二叉排序树的删除操作 5.二叉排序树的总结
第六章 复合数据类型 指针的声明与使用 数组的声明与使用 指针与数组的相互引用 字符串及相关库函数 new与delete
题目详细要求、参考资料及更新发布于: 第二周 链表与指针 题目详细要求、参考资料及更新发布于:
Presentation transcript:

Linked List Operations Dr. David Tsai 2010/4

struct Node { int data; struct Node struct Node { int data; struct Node *next; }; typedef struct Node LNode; typedef LNode *List; List first = NULL; extern void creatList(int len, int *array); extern int isListEmpty(); extern void printList(); extern List searchNode(int d); extern int deleteNode(List ptr); extern void insertNode(List ptr, int d); 修改自教科書:資料結構理論與實務以C語言實作/陳會安

typedef struct Node LNode; typedef LNode *List; List first = NULL; int data; struct Node *next; }; typedef struct Node LNode; typedef LNode *List; List first = NULL; Typedef struct Node { }Lnode; 修改自教科書:資料結構理論與實務以C語言實作/陳會安

void createList (int len, int*array) { List newnode; for (int i = 0; i < len; i++) { newnode = (List) malloc (sizeof(LNode)); newnode->data = array[i]; newnode->next = first; first = newnode; } 修改自教科書:資料結構理論與實務以C語言實作/陳會安

if (first == NULL) return 1; else return 0; } int isListEmpty () { if (first == NULL) return 1; else return 0; } void printList () { List current = first; while (current ! = NULL) { printf ([%d] , current->data); current = current->next; } printf (﹨n ); 修改自教科書:資料結構理論與實務以C語言實作/陳會安

if (first == NULL) return 1; else return 0; } void printList () { int isListEmpty () { if (first == NULL) return 1; else return 0; } void printList () { if (isListEmpty()) { printf(“The Linked List is Empty\n”); return 0; } List current = first; while (current ! = NULL) { printf ([%d] , current->data); current = current->next; printf (﹨n ); 修改自教科書:資料結構理論與實務以C語言實作/陳會安

List searchNode (int d) { if (!isListEmpty()) { List current = first; while (current ! = NULL) { if (current->data == d) return current; current = current->next; } return NULL; else { printf(“The Linked List is Empty\n”); return 0; 修改自教科書:資料結構理論與實務以C語言實作/陳會安

int deleteNode (List ptr) { List current = first; int value = ptr->data; if (isListEmpty() ) { return -1; } if (ptr==first∥ptr==NULL) { first = first->next; else { while (current->next!=ptr){ current = current->next; if (ptr->next == NULL){ current->next = NULL; current->next = ptr->next; free (ptr); return value; 修改自教科書:資料結構理論與實務以C語言實作/陳會安

void insertNode (List ptr, int d) { List newnode; newnode = (List) malloc (sizeof(LNode)); newnode->data = d; newnode->next = NULL; if (ptr == NULL) { newnode->next = first; first = newnode; } else { if (ptr->next == NULL) { ptr->next = newnode; newnode->next=ptr->next; { newnode->next=ptr->next; ptr->next = newnode; } 修改自教科書:資料結構理論與實務以C語言實作/陳會安

ptr = searchNode(temp); if ( ptr != NULL ) insertNode(ptr, temp); int main() { int temp; int data[6]={ 1, 2, 3, 4, 5, 6 }; List ptr; createList(6, data); printList(); temp = 0; insertNode(NULL, 50); while ( temp != -1 ) { scanf("%d", &temp); if ( temp != -1 ) { ptr = searchNode(temp); if ( ptr != NULL ) insertNode(ptr, temp); printf("插入後串列: "); } system("PAUSE"); return 0; List searchNode (int d) { if (!isListEmpty()) { List current = first; while (current ! = NULL) { if (current->data == d) return current; current = current->next; } return NULL; } else { printf(“The Linked List is Empty\n”); return 0; } void insertNode (List ptr, int d) { List newnode; newnode = (List) malloc (sizeof(LNode)); newnode->data = d; if (ptr == NULL) { newnode->next = first; first = newnode; } else { if (ptr->next == NULL) { ptr->next = newnode; newnode->next = NULL; } newnode->next=ptr->next; ptr->next = newnode; } } }

完成分別在(1)串列首之前、(2)串列之間、(3)串列之後插入節點 ptr = ptr ptr first 50 6 5 3 2 newnode 4 1 newnode newnode 完成分別在(1)串列首之前、(2)串列之間、(3)串列之後插入節點