DA02

Similar documents
計算機ソフトウエア

Microsoft PowerPoint - 6.pptx

第2回

Microsoft PowerPoint - 06.pptx

Microsoft Word - 中間試験 その1_解答例.doc

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

Microsoft PowerPoint - 11.pptx

アルゴリズムとデータ構造

Taro-スタック(公開版).jtd

CプログラミングI

Taro-リストⅠ(公開版).jtd

始めに, 最下位共通先祖を求めるための関数 LcaDFS( int v ) の処理を記述する. この関数は値を返さない再帰的な void 関数で, 点 v を根とする木 T の部分木を深さ優先探索する. 整数の引数 v は, 木 T の点を示す点番号で, 配列 NodeSpace[ ] へのカーソル

memo

Microsoft PowerPoint - 05.pptx

7 ポインタ (P.61) ポインタを使うと, メモリ上のデータを直接操作することができる. 例えばデータの変更 やコピーなどが簡単にできる. また処理が高速になる. 7.1 ポインタの概念 変数を次のように宣言すると, int num; メモリにその領域が確保される. 仮にその開始のアドレスを 1

alg2015-3r3.ppt

プログラミングI第10回

PowerPoint プレゼンテーション

概要 プログラミング論 構造体 構造体 複数の変数を組合わせて, ひとまとめにしたもの 簡単 重要 自己参照型, リスト 重要, 難しい S-1 S-2 新しい構造体の宣言 struct 構造体名 { データ型メ

PowerPoint プレゼンテーション

memo

PowerPoint Template

Microsoft PowerPoint - algo ppt [互換モード]

くらしと医療A4_330号.indd

Taro-リストⅢ(公開版).jtd

Microsoft PowerPoint - kougi9.ppt

オートマトンと言語

memo

Microsoft PowerPoint - ca ppt [互換モード]

alg2015-4r2.ppt

Microsoft PowerPoint ppt

Taro-ポインタ変数Ⅰ(公開版).j

Microsoft PowerPoint ppt

本組よこ/根間:文11-11_P131-158

Microsoft PowerPoint - 10.ppt [互換モード]

Microsoft Word - no205.docx

alg2015-6r3.ppt

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード]

Microsoft PowerPoint ppt

memo

PowerPoint プレゼンテーション - 物理学情報処理演習

演算増幅器

Microsoft PowerPoint - lec10.ppt

( ) ( ) 30 ( ) 27 [1] p LIFO(last in first out, ) (push) (pup) 1

離散数学

Microsoft PowerPoint - 09.pptx

gengo1-11

PowerPoint Presentation

Microsoft Word - no12.doc

Microsoft Word ã‡»ã…«ã‡ªã…¼ã…‹ã…žã…‹ã…³ã†¨åłºæœ›å•¤(佒芤喋çfl�)

プログラム言語及び演習Ⅲ

模擬試験問題(第1章~第3章)

nlp1-04a.key

Microsoft PowerPoint - kougi11.ppt

Microsoft Word _VBAProg1.docx

program7app.ppt

Microsoft PowerPoint - 講義資料-mlib

第 3 回 Java 講座 今回の内容 今週の Java 講座はコレクション 拡張 for 文, ガベージコレクションについて扱う. 今週の Java 講座は一番内容が薄いも のになるだろう. コレクション コレクションとは大きさが決まっていない配列だと考えればよい. コレクションには List 先

Microsoft PowerPoint - OS07.pptx

Microsoft Word - 第5回 基本データ構造2(連結リスト).doc

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1

広報みはま.indd

ex05_2012.pptx

第12回:木構造

Microsoft PowerPoint - ad11-09.pptx

データ構造

Microsoft PowerPoint - 説柔5_間勊+C_guide5ï¼›2015ã•’2015æŒ°æŁŽæš’å¯¾å¿œç¢ºèª“æ¸‹ã†¿ã•‚.pptx

第3回 配列とリスト

ポインタ変数

(2) 構造体変数の宣言 文法は次のとおり. struct 構造体タグ名構造体変数名 ; (1) と (2) は同時に行える. struct 構造体タグ名 { データ型変数 1; データ型変数 2;... 構造体変数名 ; 例 : struct STUDENT{ stdata; int id; do

人工知能入門

自己紹介 ( 専門分野 ) プログラミング言語の研究 特に基礎理論 研究の出発点 : 自分がうまくプログラムが書けないのを言語のせいにする プログラムの間違いを自動発見する仕組みを作る そもそも間違いを犯しにくいプログラミング言語を作る

論理と計算(2)

模擬試験問題(第1章~第3章)

PowerPoint Presentation

mnal_HDR4ex_5ex.pdf


Microsoft PowerPoint L10-Imperative Programming Languages pptx

27

4 ソフトウェア工学 Software Engineering 抽象データ型 ABSTRACT DATA TYPE データ抽象 (data abstraction) 目的 : データ構造を ( 実装に依存せずに ) 抽象的に定義 方法 : データにアクセス (read, write) する関数の仕様

memo


文字列操作と正規表現

PowerPoint プレゼンテーション

memo

Microsoft PowerPoint - 9.pptx

計算幾何学入門 Introduction to Computational Geometry

. 61 5,000 5, ,

SP100 取扱説明書

2013 5

1000

情報処理Ⅰ演習

Microsoft Word - no206.docx

PowerPoint プレゼンテーション - 物理学情報処理演習

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

Microsoft PowerPoint - 12.ppt [互換モード]

情報処理演習 B8クラス

Microsoft PowerPoint - 5Chap15.ppt

Transcription:

線形構造 データ構造とアルゴリズム ( 第 2 回 ) ー線形構造ー 用語 : レコード : ひとまとまりのデータ ( 構造体 ) 線形リスト :n 0 個のレコードの 1 次元並び 順配置 : 表 リンク配置 : 連鎖リスト 順配置された線形リスト : 表 要素の 位置 の順序関係を アドレスの値の順序関係で表現する方法 表に対する操作 : 要素の挿入 削除 表に対する操作 : アクセス リンク配置された線形リスト : 連鎖リスト N 番目の要素 N=5 N 番目の要素のアドレス = 先頭番地 +(N-1) 要素サイズ 実際 記法 100 null 0008 0032 000 0106 001 0032 000 0106 001 100 0008 1

連鎖リストに対する操作 : 要素の挿入 削除 連鎖リストに対する操作 : 要素の挿入 削除 連鎖リストに対する操作 : アクセス N 番目の要素 N-1 回リンクを辿る 連鎖リストの変種 N=5 の表現法 ( ) = 線形リスト = 順配置 ( 表 ) アクセスが速い 追加 削除 などの変更に弱い リンク配置 ( 連鎖リスト ) アクセスが遅い 追加 削除などの変更に適する スタックと待ち行列 : データ抽象化 データ構造 + 操作手続き 例 : スタック PUSH POP 待ち行列 Enquu Dquu 2

スタックの操作 ( 表を用いた場合 ) キューの操作 ( 表を用いた場合 ) スタック / キューは何のために用いるか 系統的な記憶と想起のメカニズム l スタック (LIFO) l 環境の保存と参照ー > 再帰呼び出し l 木 グラフの縦型探索 l キュー (FIFO) l バッファ ( 緩衝用 ) メモリ 装置間の速度差の吸収 l 木 グラフの横型探索 迷路の探索 : スタックの利用の例 :1 探索木 迷路の探索アルゴリズム 3

list にスタックを用いた場合 木の縦型探索とスタック 0, i=0 (i)= 1, i=1 (i-1)+(i-2), i 2 Fioni 数 int Fi(int i) swit(i) s 0: rturn(0);rk; s 1: rturn(1);rk; ult: rturn(fi(i-1)+fi(i-2)); int Fi(int i) swit(i) s 0: rturn(0);rk; s 1: rturn(1);rk; ult: rturn(fi(i-1)+fi(i-2)); Fi(3) Fi(2)+Fi(1) (Fi(1)+Fi(0))+1 (1+0)+1 同じ変数名であっても 関数呼び出しの度に 別の記憶領域が確保される ( スタックを利用している ) 変数の内容は 他の関数呼び出しによって破壊されることはない Avn-1Fioni 数を再帰呼び出しで求めるプログラム #inlu <stio.> int i(int x) swit(x) s 0: rturn 0; rk; s 1: rturn 1; rk; ult: rturn i(x-1)+i(x-2); 実行例 : %./i 15 Fi 15 = 610 int min(int r, r *rv[]) int x; wil(--r) x=toi(*++rv); print("fi % = % n",x,i(x)); rturn 0; 4

Avn-2 環状連鎖リストを使った電光掲示板風表示ログラム #inlu <stio.> #inlu <strin.> #inlu <unist.> //Sl rrntil strutur typ inition typ strut no r ; strut no *nxt; NODE; 実行例 : %./link1 Tis is pn 与えた文字列が横スクロールする NODE *AlloNos(int num) //Mmory llotion NODE *rt; int i; rt=(node *)mllo(sizo(node) *num ); or (i=0; i<num; i++) i (i<num-1) (rt+i)->nxt = (rt+i+1); ls (rt+i)->nxt = rt;//o n n t til to rturn rt; voi StCr(NODE *p, r *r) wil(*r) p->=*r; p=p->nxt; r++; PrintNo(NODE *p,int n) wil(n--) print("%",p->); p=p->nxt; lus(stout); Avn-2 続き int min(int r, r *rv[]) int ln; r lin[300]; NODE *s; lin[0]=(r)null; wil(--r)//ontint rs strt(lin,*++rv); strt(lin," "); ln=strln(lin);//strin lnt s=(node *)AlloNos(ln); StCr(s,lin); wil(1) //Enlss Loop PrintNo(s,ln); putr (' r'); //Crri rturn s=s->nxt; uslp(8); #inlu <stio.> #inlu <stli.> //# in QUEUE // キュー #in STACK // スタック #in SIZ 10 Avn -2 STACK/QUEUE /* * * * * * * * * キューの定義 **************/ #i QUEUE #in A(Q,x) n_quu(&q,x) #in Gt_An_Dlt(Q) _quu(&q) #in Not_Empty(Q) Q.QF!=Q.QR #in Init(Q) Q.QF=Q.QR=0 #in Stk_or_Quu quu #in QUEUE_SIZ SI // キューのサイズ strut Quu int Bu[QUEUE_ SIZ]; int QF; int QR; ; ty p stru t Qu u q u u ; /* QUEUE 用 */ voi n_quu(); voi n_quu(quu * Q, int v) Q->QR = (Q->QR+1)%QUEUE_SIZ; i (Q->QR == Q->QF) print(strr,"quu Ovrlow n"); xit(1); ls Q->Bu[Q->QR] = v; _quu(quu * Q) i (Q->QR == Q->QF) print(strr,"quu Unrlow n"); xit(1); ls Q->QF = (Q->QF+1)%QUEUE_SIZ; rturn Q->Bu[Q->QF]; #ni /* * * * * * * * キューの定義終わり *************/ /* * * * * * ** スタックの定義 *****************/ #i STACK #in A(S,x) pus(&s,x) #in Gt_An_Dlt(S) pop(&s) #in Not_Empty(S) S.SP>0 #in Init(S) S.SP=0 #in Stk_or_Quu stk #in STACK_SIZ SIZ // スタックのサイズ strut Stk in t Bu [STACK_ SIZ]; in t SP; ; typ strut Stk stk ; voi pus(stk* S,int ) i (S->SP<STACK_SIZ-1) S->Bu[S->SP++]=; ls print(strr,"stk ovrlow. n"); xit(1); pop(stk* S) i (S->SP > 0) rturn S->Bu[--(S->SP)]; ls print(strr,"stk unrlow. n"); xit(1); #ni /* * * * * * * スタックの定義終わり ***********/ Avn -2 続き min() int i,; Stk_or_Quu X; Init(X); or (i=0; i< SIZ-1; i++) =(int)('a'+i); A(X,);putr(); putr(' n'); wil(not_empty(x)) putr(gt_an_dlt(x)); putr(' n'); 実行例 : % stk-quu ABCDEFGHI IHGFEDCBA 5