資料結構C語言動態分配實現串

2021-06-07 21:46:45 字數 1718 閱讀 8364

說明:堆分配儲存實現串時,串並不是以』\0『, 而是用資料項int length來表示的,所以和傳統的c語言操作字串有所不同。

標頭檔案#ifndef pilehead_h_included

#define pilehead_h_included

#include

#include

typedef struct

hstring ;

int strassign( hstring* pstr , char* pch ) ;

int strlength( hstring* pstr ) ;

int strcompaer( hstring* pstr1 , hstring* pstr2 ) ;

int strclear( hstring* pstr ) ;

int strconcat( hstring* pstr , hstring str1 , hstring str2 ) ;

int strsub( hstring* sub ,  hstring pstr , int pos , int length ) ;

int strprint( hstring* pstr ) ;

#endif // pilehead_h_included

函式實現

#include "pilehead.h"

int strassign( hstring* pstr , char* pch )

int i ;

for( i = 0 ; pch[i] != '\0' ; i++ )

if( i == 0 )

else

i = 0 ;

while( i < pstr->len )

return 0 ;

}int strprint( hstring* pstr )

printf( "\n" ) ;

return 0 ;

}int strlength( hstring* pstr )

int strcompaer( hstring* pstr1 , hstring* pstr2 )

else if( ret > 0 )

else

}int diff = pstr1->len - pstr2->len ;

if( diff < 0 )

else if( diff == 0 )

return 1 ;

}int strclear( hstring* pstr )

pstr->len = 0 ;

return 0 ;

}int strconcat( hstring* pstr , hstring str1 , hstring str2 )

pstr->len = str1.len + str2.len ;

return 0 ;

}int strsub( hstring* sub ,  hstring pstr , int pos , int length )

strclear( sub ) ;

sub->ch = ( char* )malloc( length * sizeof( char ) ) ;

sub->len = length ;

int i = 0 ;

while( i < length )

return 0 ;

}測試函式

#include "pilehead.h"

int main()

資料結構 串的順序儲存 動態分配)

5.小結 include include define maxlen 255 預定義最大串長為255typedef struct hstring 函式宣告 void initstring hstring s 1.初始化 void increasesize hstring s,int len 2.擴容...

C語言動態分配記憶體

動態開闢記憶體的函式 void malloc size t size 這個函式向記憶體申請 塊連續可 的空間,並返回指向這塊空間的指標 如果開闢成功,則返回 個指向開闢好空間的指標 如果開闢失敗,則返回 個null指標,因此malloc的返回值 定要做檢查 返回值的型別是 void 所以malloc...

C語言動態分配記憶體知識

陣列的長度必須事先指定,只能是常整數,不能是變數 傳統形式定義的陣列,該陣列的記憶體程式設計師無法手動釋放,只能在定義 該陣列的函式使用完畢後,釋放陣列占用的記憶體。陣列的長度一旦定義,其長度就不能更改。傳統形式定義的陣列不能跨函式使用。動態記憶體分配可以很好的解決傳統陣列的缺點。傳統陣列也被稱之為...