STRUCTURE 為一種複合式的資料型態,可用來把相關的資料組織 成為有意義的資料單元。 名片: name age tel e-mail namecard : char name[10]; int age; char tel[10] char e-mail[60]

Slides:



Advertisements
Similar presentations
Structure and User-Define Type struct tag {members;…;} variable; typedef old_type new_type;
Advertisements

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.
布林代數的應用--- 全及項(最小項)和全或項(最大項)展開式
學習C++的基本語法 認識關鍵字與識別字的不同 學習程式碼偵錯的流程 學習如何提高程式的可讀性
I/O FUNCTIONS 輸入 與 輸出. #include int fclose(FILE *); int feof(FILE *); int fflush(FILE *); int fgetc(FILE *); getchar(); char *fgets(char*, int, FILE*);
第二章 太陽能電池的基本原理 及其結構 2-1 太陽能電池的基本原理 2-2 太陽能電池的基本結構 2-3 太陽能電池的製作.
: Boxes ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 11003: Boxes 解題者:蔡欣燁 解題日期: 2007 年 3 月 19 日.
: Road Construction ★★★☆☆ 題組: Contest Archive with Online Judge 題號: 10724: Road Construction 解題者:徐文宏 解題日期: 2011 年 4 月 20 日 題意:給一個座標圖 (-1000~1000)
第一章 變數、常數及資料型態. 變數 C 程式語言的變數名稱 第一個字必須是英文字母或底線 (_) 之後可以是數字, 英文字母或底線 (_) 不可以是保留字 例: Num (Ο) _score (Ο) C&C (X) 8num (X)
JAVA 程式設計與資料結構 第二章 JAVA 程式基本概念及操作. 第一個程式 /* * 這是第一個程式 (FirstP.java) */ class FirstP{ public static void main(String args[]){ System.out.println("Whatever.
: Matrix Decompressing ★★★★☆ 題組: Contest Volumes with Online Judge 題號: 11082: Matrix Decompressing 解題者:蔡權昱、劉洙愷 解題日期: 2008 年 4 月 18 日 題意:假設有一矩陣 R*C,
5.1 Rn上之長度與點積 5.2 內積空間 5.3 單範正交基底:Gram-Schmidt過程 5.4 數學模型與最小平方分析
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 肆 資料分析與表達.
1. 假設以下的敘述為一未提供 “ 捷徑計算 ” 能力的程式段,試用程 式設計的技巧,使此敘述經此改 寫的動作後,具有與 “ 捷徑計算 ” 之 處理方法相同之處理模式。 if and then E1 else E2 endif.
Structural Equation Modeling Chapter 7 觀察變數路徑分析=路徑分析 觀察變數路徑分析.
JAVA 程式設計與資料結構 第十四章 Linked List. Introduction Linked List 的結構就是將物件排成一列, 有點像是 Array ,但是我們卻無法直接經 由 index 得到其中的物件 在 Linked List 中,每一個點我們稱之為 node ,第一個 node.
Course 0 課程介紹 Introduction
MATLAB 程式設計 第 11 章 多維陣列 多維陣列的定義 在 MATLAB 的資料型態中,向量可視為 一維陣列,矩陣可視二維陣列,對於維 度 (Dimensions) 超過 1 的陣列則均可視 為「多維陣列」 (Multidimesional Arrays , 簡稱 N-D Arrays)
8.1 何謂高度平衡二元搜尋樹 8.2 高度平衡二元搜尋樹的加入 8.3 高度平衡二元搜尋樹的刪除
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 肆 資料分析與表達.
第十二章 常用的數學函數. 數字函數 此類函數主要是一些常用的數學函數 定義在 標頭檔 C 提供之數學函數 pow(), sqrt(), exp() log(), log10() ceil(), floor() fabs(), ldexp() fmod(), modf()
JAVA 程式設計與資料結構 第十章 GUI Introdution III. File Chooser  File Chooser 是一個選擇檔案的圖形介面, 無論我們是要存檔還是要開啟檔案,使 用這個物件都會讓我們覺得容易且舒適。
資料結構實習-四.
© The McGraw-Hill Companies, Inc., 2008 第 6 章 製造流程的選擇與設計.
Introduction to pointers in C/C++. Pointers 特殊變數 存放變數在記憶體中的位址 MinGW C++ 中佔用 4 bytes 間接定址取執法 位址 指標變數 變數內容 變數.
Chapter 13 塑模靜態觀點:物件圖 Static View : Object Diagram.
Introduction to Java Programming Lecture 17 Abstract Classes & Interfaces.
第九章 結構. 結構的宣告 結構 它是由許多不同 ( 或相同 ) 資料型態的變數所組成的 集合,通常利用結構標籤稱呼此集合 struct student { char *name; int score; }; struct 為保留字,表示結構的宣告開始 結構項目需定義於大括號「 { } 」內 結尾需加上分號.
24-6 設定開始與結束場景中的 程式 最後我們要替這個遊戲收個尾, 幫它把開始 的等待畫面跟結束畫面處理一下。
Introduction to Java Programming Lecture 10 Array I Declaring, Creating, and Initializing Arrays.
8-1 Chapter 8 技術與流程 組織的技術 製造業的核心技術 服務業的核心技術 非核心技術與組織管理 工作流程的相依性.
7 陣列與搜尋 7.1 陣列 一般資料變數 宣告一維陣列 起始一維陣列 7-4
Hung-Hsiang WuWindows Processing Design1 Chapter 3 基本觀念 變數宣告與型態 特殊運算子符號 字串與數值的轉換 類別與物件的觀念 建立新的專案 WinMain 程式進入點 Include Header File.
基準特徵 基準面 基準座標系 基準點 基準線 基準軸 基準特徵顯示之控制. 基準特徵 基準面 基準座標系 基準點 基準線 基準軸 基準特徵顯示之控制.
: Fast and Easy Data Compressor ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10043: Fast and Easy Data Compressor 解題者:葉貫中 解題日期: 2007 年 3.
第十章 再論結構. 指標與結構的關係 /* 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 日 題意:在這個題目中,我們要定義.
1 Excel 講授內容 ( 進階 ) 授課教師 : 吳槐桂 最後更新 : 2008/05/01.
第七章 連續機率分配.
資料結構實習-一 參數傳遞.
第六章 陣列.
參考書籍:古頤榛, Visual C++ 6教學範本 , 碁峰資訊股份有限公司。
Feature Motion for Monocular Robot Navigation. 單視覺機器人 – 追蹤 (tracking) 最常見的機器人導航技術 特徵點特性(特別 匹配性 抗破壞性) 特徵點取得(區塊 尺度不變)
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2008.
Section 4.2 Probability Models 機率模式. 由實驗看機率 實驗前先列出所有可能的實驗結果。 – 擲銅板:正面或反面。 – 擲骰子: 1~6 點。 – 擲骰子兩顆: (1,1),(1,2),(1,3),… 等 36 種。 決定每一個可能的實驗結果發生機率。 – 實驗後所有的實驗結果整理得到。
函式 Function Part.2 東海大學物理系‧資訊教育 施奇廷. 遞迴( Recursion ) 函式可以「呼叫自己」,這種動作稱為 「遞迴」 此程式的執行結果相當於陷入無窮迴圈, 無法停止(只能按 Ctrl-C ) 這給我們一個暗示:函式的遞迴呼叫可以 達到部分迴圈的效果.
Pointer and Array 指標 與 陣列 double *a, b[10]; char name[80], *np;
Windows Processing Design1 Chapter 1 C/C++ 概論 畫面輸出與鍵盤輸入 程式流程 程式流程的迴圈 函數的基礎 指標與陣列 字串 類別 利用 BCB 開發程式.
校園網頁整合平台介紹 電算中心綜合業務組. 大綱 設計理念 功能介紹 實做 FAQ 特殊案例 Q&A.
Visual Basic 簡介 Visual Basic 基礎語法 東海大學物理系‧施奇廷 《程式設計》
: Function Overloading ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 11032:Function Overloading 解題者:許智祺 解題日期: 2007 年 5 月 8 日 題意:判對輸入之數字是否為.
第五章 內積空間 5.1 Rn上之長度與點積 5.2 內積空間 5.3 單範正交基底:Gram-Schmidt過程
5 重複迴圈 5.1 增減運算符號 增量運算符號 減量運算符號
2 C++ 程式概論 2.1 C++ 程式結構 程式註解 // 插入標題檔 #include 2-3
ArcINFO &Geodatabase 由 ESRI 產生 1970 ArcINFO 一開始被設計在迷你電 腦上, 後來逐漸發展, 在 UNIX 系統上也能 執行, 直到今天, 已經可以在不同的平台上 運作.
連續隨機變數 連續變數:時間、分數、重量、……
Visual C++重點複習.
資料結構實習-六.
C 語言練習題 2010/12/2. C 程式的格式 一、 C 程式的格式 (1). /* …. */ 是 C 程式的 ______ main() 的內容是由敘述構成的 (2). 敘述要以 __ 為結束符號 (3). 變數、函數都要做 ____ 的宣告 (4). ‘=’ 是 ____ 用的算符 (5).
結構學 ( 一 ) 第八次作業 97/05/22. 題目一 題目一 (a) 先決定放鬆哪個束制,成為靜定結構 以支承 C 之水平反力為贅力,則 C 點滾支 承變成自由端,即形成靜定基元結構 C 點滿足變位諧和  Δ CH =0.
1 Introduction to Java Programming Lecture 3 Mathematical Operators Spring 2009.
VHDL語法(3).
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 肆 資料分析與表達.
第 8 章 記憶體指標. 8.0 變數、數值、位址 8.1 指標與變數 對 C++ 語言而言,指標( pointers )是存放 變數或陣列的位址,因此也可以藉由指標 間接取得變數或陣列中的值。 對 C++ 語言而言,指標( pointers )是存放 變數或陣列的位址,因此也可以藉由指標 間接取得變數或陣列中的值。
朝陽科技大學資管系 李麗華 第四章 鏈結串列 Linked List Fools look to tomorrow, wise men use tonight.
資料結構(計財系).
C++ 程式語言. 2 C++ 程式語言 – 大綱 1. 指標 2. 結構與類別 3. 標準函式庫 (STL)
1 類別與物件 II (Classes and Objects II) 鄭士康國立台灣大學 電機工程學系 / 電信工程研究所 / 資訊網路與多媒體研究所.
Presentation transcript:

STRUCTURE 為一種複合式的資料型態,可用來把相關的資料組織 成為有意義的資料單元。 名片: name age tel namecard : char name[10]; int age; char tel[10] char [60]

結構的定義 struct namecard { char name[20]; int age; char tel[10]; char [60]; };

結構的變數 struct namecard mycard; typedef struct namecard NAMECARD; NAMECARD mycard;

結構的變數初始值、輸入、輸出 NAMECARD A = {“mike”, 30}; printf("Enter you name:\n"); scanf("%s", A.name); printf("Enter you age:\n"); scanf("%d", &A.age); printf("You name is %s\n", A.name); printf("You are %d years old\n", A.age);

結構陣列 Mike 30 Rose 24 Lily 28 Jack 27 Tom 19 cardbook[] cardbook[]={{“Mike”,30}, {“Rose”,24}, {“Lily”,28}, {“Jack”,27}, {“Tom”, 19}};

結構陣列的輸入、輸出 NAMECARD cardbook[5]; for(i=0 ; i<5 ; i++) { printf("Enter you name:\n"); scanf("%s", cardbook[i].name); printf("Enter you age:\n"); scanf("%d", &cardbook[i].age); } for(i=0 ; i<5 ; i++) printf("%s,%d\n", cardbook[i].name, cardbook[i].age);

結構指標 NAMECARD A={“Mike”, 30}, B={“Rose”,28}; NAMECARD *cptr; cptr = &A; printf(“nanme:%s, age:%d\n”, cptr->name, cptr->age}; cptr =&B; printf(“nanme:%s, age:%d\n”, cptr->name, cptr->age};

結構指標與結構陣列 NAMECARD cardbook[3]={{"MIKE", 29}, {"COCO", 30}, {"John", 25}}; NAMECARD *cptr; cptr=cardbook; for(i=0 ; i<3 ; i++) printf("%s,%d\n", cptr[i].name, cptr[i].age);

結構的動態配置 NAMECARD *cptr; clrscr(); printf("Enter the number of namecard:\n"); scanf("%d", &n); cptr=(NAMECARD*) malloc(sizeof(NAMECARD)*n);

Case Study : 平面座標點. A(2,3). B(5,12). B(16,8) struct point { int x; int y; };

Case Study : 兩點距離. A(2,3). B(5,12) float distance(POINT, POINT);

Case Study : 求重心. A(2,3). B(5,12). B(16,8).G.G

Homework : 複數 1. 請定義一名為 complex 的複數結構,此結構裡有兩個浮點數 r, v; 2. 試定義出下列四個函示 CP complex_add(CP, CP); CP complex_sub(CP, CP); CP complex_mul(CP, CP); CP complex_sub(CP, CP); 3. 寫一主程式輸入兩個複數,計算兩複數之和、差、乘積及商

Case Study : Poker Game struct card { int point; int type; int status; }; typedef struct card CARD; int type[4]={5,4,3,6}; /* , ,,  */ char* point[13]={"2", "3", "4", "5", "6", "7", "8", "9", "10", "J","Q", "K", "A"};

Case Study : Poker Game poker = (CARD*) malloc(sizeof(CARD)*52); for(i=0 ; i<52 ; i++) { poker[i].type = i/13; poker[i].point = i%13; } 製造一副撲克牌

Case Study : Poker Game CARD temp; srand(time(NULL)); for(i=0 ; i<6000 ; i++) { r = rand()%52; while((l=rand()%52)==r); temp = p[r]; p[r] = p[l]; p[l] = temp; } 洗牌

Case Study : Poker Game printf("Enter the number of your card:"); scanf("%d", &u); printf("%c%s\n", type[poker[u].type], point[poker[u].point]); printf("I choose :\n"); scanf("%d", &i); printf("%c%s\n", type[poker[i].type], point[poker[i].point]); if(poker[u].point < poker[i].point) printf("You lose !!\n"); else if( (poker[u].point == poker[i].point) && (poker[u].type<poker[i].type) ) printf("You lose !!\n"); else printf("You Win !!\n");

串列 串列的操作. Add node. Delete node. Show list

串列. 佇列 ( FIFO 、 LIFO ). 雙向鏈結 DOUBLE LINK

佇列 struct node { int data; struct node * next; }; typedef struct node NODE;

佇列 newnode = (NODE*) malloc(sizeof(NODE)); newnode->data = data; newnode->next = NULL; NODE *newnode;

佇列( LIFO ) insert(&list, newnode); NODE *list=NULL; list 10 list newnode->next = *head; *head = newnode;

佇列( LIFO ) list list *list= (*list)->next;

佇列( LIFO ) list ptr ptr = ptr->next; printf("(%x:%d)->", ptr, ptr->data);

佇列( FIFO ) head 10 tail head 10 tail head 10 tail 20 head 10 tail 20 tail 1 2

佇列( FIFO ) head 10 tail head tail

雙向鏈結 10 struct node{ int data; struct node* right; struct node* left; }; typedef struct node NODE;

雙向鏈結 10 head 10 head 10 head head 2 1 3

雙向鏈結 head head