使用堆儲存結構的串的長度任意,比使用順序儲存結構的串更加靈活易用
#include #include //串的堆分配結構
typedef struct hstring;
typedef int status;
#define ok 1
#define error 0
//串的複製
status strassign(hstring &t, char *chars)
int length = 0; //用於記錄chars的長度
for(char *c = chars; *c; c++, length++); //計算串chars的長度
if(!length) else
for(int i=0; it,則返回值》0,若s=t,則返回0,所ss.length || len > s.length-pos+1)
if(sub.ch)
if(!len) else
sub.length = len;
}return ok;
}
資料結構 串的儲存結構
定長資料串基本操作 插入位置pos將串分為兩部分 有三種情況 情況一 插入後總長大於原長 情況二 插入後總長等於原長 第三種 小於 串的模式匹配 目的 主要是消除了主串指標的回溯,從而使演算法效率有了某種程度的提高。kmp演算法引入了乙個next陣列 next i 表示的是前i的字元組成的這個子串最...
資料結構 堆的操作
堆是指乙個完全二叉樹,它的某個結點的值總是不大於,或不小於其父節點的值,堆分為大堆和小堆,小堆堆頂元素一定是最小的,堆頂到每個葉子結點的路徑是公升序的,大堆則相反。堆的操作主要包括堆的建立,插入元素,刪除元素,返回堆頂元素等操作,其中,堆的建立要用到向下調整演算法,插入要用到向上調整演算法,具體操作...
資料結構 堆
最大堆 最小堆 堆的定義是 n個元素的序列,當且僅當滿足如下關係時被成為堆 1 ki k2i 且 ki k2i 1 或 2 ki k2i 且 ki k2i 1 i 1,2,n 2 當滿足 1 時,為最小堆,當滿足 2 時,為最大堆。若將此序列對應的一維陣列堪稱是乙個完全二叉樹,則2i和2i 1個節點...