熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> 數據結構 >> 正文

串的順序存儲

2013-11-15 14:58:31  來源: 數據結構 

  因為串是特殊的線性表故其存儲結構與線性表的存儲結構類似只不過由於組成串的結點是單個字符所以存儲時有一些特殊的技巧

串的順序存儲

順序串
  串的順序存儲結構簡稱為順序串
  與順序表類似順序串是用一組地址連續的存儲單元來存儲串中的字符序列因此可用高級語言的字符數組來實現按其存儲分配的不同可將順序串分為如下兩類
  ()靜態存儲分配的順序串
  ()動態存儲分配的順序串

靜態存儲分配的順序串
)直接使用定長的字符數組來定義
  該種方法順序串的具體描述
      #define MaxStrSize   //該值依賴於應用由用戶定義
      typedef char SeqString[MaxStrSize];  //SeqString是順序串類型
      SeqString S;  //S是一個可容納個字符的順序串
 注意
  ①串值空間的大小在編譯時刻就已確定是靜態的難以適應插入鏈接等操作
  ②直接使用定長的字符數組存放串內容外一般可使用一個不會出現在串中的特殊字符放在串值的末尾來表示串的結束所以串空間最大值為MaxStrSize時最多只能放MaxStrSize個字符
  【例】C語言中以字符\表示串值的終結
 
)類似順序表的定義
  直接使用定長的字符數組存放串內容外可用一個整數來表示串的長度此時順序串的類型定義完全和順序表類似
    typedef struct{
        char ch[MaxStrSize]; //可容納個字符並依次存儲在ch[n]中
        int length;
      }SeqString;

 注意
  ①串的長度減的位置就是串值的最後一個字符的位置
  ②這種表示的優點是涉及串長的操作速度快

動態存儲分配的順序串
  順序串的字符數組空間可使用C語言的malloc和free等動態存儲管理函數來根據實際需要動態地分配和釋放
  這樣定義的順序串類型亦有兩種形式
)較簡單的定義
     typedef char *string; //C中的串庫<stringh>相當於使用此類型定義串

)復雜定義
    typedef struct{
        char *ch;// 若串非空則按實際的串長分配存儲區否則ch為NULL
        int length;
     }HString;
串的順序存儲操作【參見動畫演示】


From:http://tw.wingwit.com/Article/program/sjjg/201311/22631.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.