#include < stdio.h >#include < stdlib.h >
#include < string.h >
#define true 1
#define false 0
#define ok 1
#define error 0
#define overflow -1
#define maxbooknum 1000 //假設只對1000本書建立索引表
#define maxkeynum 2500 //索引表的最大容量
#define maxlinelen 500 //書目串的最大長度
#define maxwordnum 10 //詞表的最大容量
typedef int elemtype ; //定義鍊錶資料元素型別為整型(書號型別)
typedef struct
hstring;
typedef struct lnode
lnode,*linklist;
void initlist(linklist *l) ;
void printlist(linklist l) ;
elemtype getelem(linklist l, int i, elemtype *e) ;
int locateelem(linklist l,elemtype e) ;
void destroylist(linklist l) ;
void initstring(hstring *t) ;
void strassign( hstring *t, char *cha) ;
void strcopy( hstring *t , hstring s ) ;
void strprint(hstring t, file *fp) ;
void clearstring(hstring *t) ;
int strcompare(hstring s,hstring t) ;
typedef struct wordlisttype ; //詞表型別(順序表)
typedef struct idxlisttype ; //索引表型別(有序表)
//主要變數
char buf[ 256 ] ; //書目串緩衝區
wordlisttype wdlist ; //詞表
hstring oftenwords[ 7 ] ; //常用詞表
//---------------------basic operation---------------------//
//---------------------for insert--------------------------//
//---------------------for query---------------------------//
#include "head.h"
void initidxlist( idxlisttype *idxlist )
void getline( file *fp )
void oftenwords( ) //構造常用詞表
strassign( &(oftenwords[ 0 ]) , "an" ) ;
strassign( &(oftenwords[ 1 ]) , "a" ) ;
strassign( &(oftenwords[ 2 ]) , "to" ) ;
strassign( &(oftenwords[ 3 ]) , "of" ) ;
strassign( &(oftenwords[ 4 ]) , "the" ) ;
strassign( &(oftenwords[ 5 ]) , "the" ) ;
strassign( &(oftenwords[ 6 ]) , "and" ) ;
}int isoftwords( char *temp ) //判斷是否為常用詞表
return error ;
}void extractkeyword( elemtype *bno )
temp[ j ] = '\0' ;
if( 0 == wdlist.last )
else
}++ i ;
}wdlist.last-- ;
}int insidxlist( idxlisttype *idxlist , elemtype bno )
return ok ;
}void puttext( file *fp , idxlisttype idxlist )
printf( "\n" ) ;
fprintf( fp , "%c " , '\n' ) ;}}
//------------------------for insert------------------------------//
void getword( int i , hstring *wd )
int locate( idxlisttype idxlist , hstring wd , int *b )
else
}void insertnewkey( idxlisttype *idxlist , int i , hstring wd )
int makenode( linklist *p , elemtype bno )
//--------------------------for query-----------------------------------//
void extractyword( int booknum[ ] , char words[ ] )
words[ i ] = '\0' ;
while( buf[ i ] != '\n' )
temp[ j ] = '\0' ;
booknum[ k ] = atoi( temp ) ;
++ k ;}}
void extractyname( char name[ ] , wordlisttype *namewords )
(*namewords).item[ (*namewords).last ][ j ] = '\0' ;
++ (*namewords).last ;
if( name[ i ] == '\0' )
break ;
else
++ i ;}}
void findthesame( int booknum[ ] , int num[ ] )
if( !num[ j ] || j >= 10 )
booknum[ k ] = 0 ;}}
}void query( file *fp , char *name )
, num[ 10 ] = ;
extractyname( name , &namewords ) ;
while( !feof( fp ) )
times++ ;
}else //後續次,保留相同的書號,不同的書號則置為0
}} // for
} // while
//判斷並鎖定書號
j = 0 ;
while( !booknum[ j ] && j < 10 )
j ++ ;
if( j >= 10 )
printf( "can't find that book!" ) ;
else
printf( "oh, find the book you want! the number is :%d\n" , booknum[ j ] ) ;
}int main( )
第四章 繼承
一 為什麼要繼承 在物件導向中我們將具有很多重複內容的類中的內容提取出來,寫成乙個單獨的類 其他類只需要繼承就能取得這些功能,同時可以在自己類中寫入獨特的自定義方法 二 繼承語法 inte ce circle nsobject 繼承是在介面中定義的 冒號後的類名是要整合的類,nsobject 是co...
第四章 物件
三個特性 身份 型別 值 每個物件都有唯一的身份來標識自己,使用內建函式id 得到。例子 usr bin env python coding utf 8 a 32 print a b a print id a id b 結果 d python27 python.exe e workp python ...
第四章 其他
sizeof和strlen 區別sizeof以位元組為單位給出資料的大小,strlen 函式以字元為單位給出字串的長度。使用strlen 函式要加 include標頭檔案。sizeof計算字元時會將標誌字串結束的不可見的空字元計算在內。定義符號常量 方法一 define name value 優點 ...