ホーム » スタッフ » 斉藤徹 » リスト処理の基本

2012年5月
« 4月   6月 »
 12345
6789101112
13141516171819
20212223242526
2728293031  

最近の投稿(電子情報)

アーカイブ

カテゴリー

リスト処理の基本

来週からのテストということもあり、前半に簡単なリスト処理の基本を説明したあと、 後半はテスト勉強時間とした。

最初に復習のおまけとして、typedef や C++でのリストの宣言の違いを説明。

// 授業でのスタイル
struct List {
int          data ;
struct List* next ;
} ;
// C言語でtypedefを使うスタイル
typedef struct LIST {
int          data ;
struct LIST* next ;
} List ;
List* top = .... ;
// C++では、構造体名がそのまま使える
struct List {
int   data ;
List* next ;
} ;
List* top = .... ;

簡単な補助関数を示して、基礎的なプログラム例を演習として行う。

struct List* cons( int x , struct List* n ) {
struct List* ans ;
if ( (ans=(struct List*)malloc(sizeof(struct List)))!=NULL ) {
ans->data = x ;
ans->next = n ;
}
return ans ;
}
void print( struct List* p ) {
for( ; p != NULL ; p = p->next ) {
printf( "%d" , p->data ) ;
}
}
int sum( struct List* p ) {
int ans ;
for( ans = 0 ; p != NULL ; p = p->next ) {
ans += p->data ;
}
return ans ;
}
void main() {
struct List* top = cons( 1 , cons( 2 , cons( 3 , NULL ) ) ) ;
print( top ) ;
printf( "%d" , sum( top ) ) ;
}