第四章(5) 建立詞索引表

2021-07-02 01:51:44 字數 3851 閱讀 1620

#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 優點 ...