来週からのテストということもあり、前半に簡単なリスト処理の基本を説明したあと、 後半はテスト勉強時間とした。
最初に復習のおまけとして、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 ) ) ; }