progC.pdf progC-s.pdf 記事一覧 |
スタック |
progC-s.pdf に「D95%データ構造」を追加しました.
参考資料([n]は本文でも引用):
[1] データ構造 - Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%87%E3%83%BC%E3%82%BF%E6%A7%8B%E9%80%A0
[2] アルゴリズム+データ構造=プログラム(ニクラウス・ヴィルト、片山卓也訳)
http://www.fukkan.com/fk/VoteDetail?no=8797
この本の復刊活動にご賛同の方はリクエスト投票をお願いします
[3] 知識の森:6群3編 アルゴリズムとデータ構造
http://www.ieice-hbkb.org/portal/doc_579.html
[4] 電気工学入門シリーズ 15,アルゴリズムとデータ構造
http://www.morikita.co.jp/books/book/1606
※ 授業で使いましたが Pascal は全滅? <改訂 C言語版>があるそうです.
[5] データ構造とアルゴリズム - 桐蔭学園
http://www.cc.toin.ac.jp/sc/palacios/courses/undergraduate/sophomore/algorithms/algorithms.pdf
※ 全186ページ
補足:(1) [2]はかつてのバイブル.
(2) デバッグ用のリストです.pop( ) しても文字は残っています.
#include < stdio.h> //HTML対策で' '挿入
char y[ ]="[2*(x+3]+1)/(z-5)";
//char y[ ]="[2*(x+3)+1]/(z-5)";
char s[32]; int sp=0;
void push(char c){sp++; s[sp] = c;}
char pop( ){sp--; return s[sp+1];}
//
struct le1{int d, n;} w1[100]={{10, 0},{11, 1},{12, 2}};
typedef struct{int d; struct le2 *n;} le2;
le2 w2[100]={{20, &w2[1]},{21, &w2[2]},{22, NULL}};
void *p; le2 *p2;
int main( ){
char *p=y; int err=0; int i;
printf("y = %s\n", y);
do{
if(*p == '['){push(']');}
if(*p == '('){push(')');}
if(*p == ']' || *p == ')'){
if(*p != pop ( )){err = 1;}
}
printf("p = %p, c = %c, sp = %d, s = %s\n", p, *p, sp, s+1);
p++;
}while(*p != '\0' && sp >= 0);
if(sp != 0){err = 1;}
printf("%s, %d\n", s+1, err);
//
for(i = 0; i < 4; i++){
printf("%d, %d, %d\n", i, w1[i].d, w1[i].n);
}
for(i = 0; i < 4; i++){
printf("%d, %d, %p\n", i, w2[i].d, w2[i].n);
}
p = malloc(100*sizeof(le2));
p2 = p; p2->d = w2[1].d; p2->n = w2[1].n;
printf("%d, %p", p2->d, p2->n);
//
return 0;
}
※コメント投稿者のブログIDはブログ作成者のみに通知されます