資料結構實驗 串的定義,基本操作及模式匹配

2021-09-29 19:36:56 字數 4354 閱讀 4667

掌握這種抽象資料型別的特點;熟練掌握串的順序儲存結構表示和基本操作,並能利用這些基本操作實現串的其他各種操作。

分別用兩種儲存方式實現

串的定長順序儲存實現

//串的定長順序儲存結構

#include

#include

#include

#define true 1

#define false 0

#define ok 1

#define error 0

#define infeasible -1

#define overflow -2

typedef

int status;

#define maxstrlen 255

//可在255以內定義最大串長

typedef

unsigned

char sstring[maxstrlen+1]

;//0號單元存放串長

//串賦值

status strassign

(sstring &s,

char

*chars)

return ok;

}//strassign

//建立串

status createstring

(sstring &t)

return ok;

}//createstring

//求串長

intstrlength

(sstring s)

//輸出字串

void

strprint

(sstring s)

printf

("\n");

}//strprint

//求子串

status substring

(sstring &sub, sstring s,

int pos,

int len)

else

return ok;

}//substring

//串連線

status concat

(sstring &t,sstring s1,sstring s2)

for(j=

1;j<=s2[0]

;j++

) uncut=true;

}else

if(s1[0]

//截斷

for(j=

1;j<=maxstrlen-s1[0]

;j++

) uncut=false;

}else

//s1[0]>maxstrlen

uncut=false;

}return uncut;

}//concat

//串比較

intstrcompare

(sstring s,sstring t)

return s[0]

-t[0];

}//strcompare

//串的簡單模式匹配

intindex

(sstring s1,sstring s2,

int pos)

else}if

(j>s2[0]

)return i-s2[0]

;else

return0;

}//index

void

main()

break

;case6:

int wz[80]

;//wz陣列記錄子串出現的位置

i=0;

//計數器清零

printf

("please input s1:");

createstring

(s1)

;printf

("please input s2:");

createstring

(s2)

; pos=1;

//初始化起始檢索位置

while

(pos<=s1[0]

)//檢索整個主串

//繼續下乙個子串的檢索}if

(i==0)

printf

("沒有檢索到需要的子串! ");

//如果退出迴圈後,i仍為0,說明不存在匹配的子串

else

printf

("\n");

break

;case0:

exit(0

);}//switch

printf

("請選擇你的操作:\n");

}//while

}//main

串的堆分配儲存

//串的堆分配儲存

#include

#include

#include

#include

#define true 1

#define false 0

#define ok 1

#define error 0

#define overflow -1

typedef

int status;

typedef

struct

hstring;

status strinit

(hstring &t)

status strassign

(hstring &t,

char

*chars)

else

t.length=i;

}printf

("串建立成功!");

return ok;

}//strassign

status createstring

(hstring &t)

//createstring

intstrlength

(hstring s)

//strlength

status strprint

(hstring s)

printf

("\n");

return ok;

}//strprint

status substring

(hstring &sub, hstring s,

int pos,

int len)

else

return ok;

}//substring

//串連線

status concat

(hstring &t,hstring s1,hstring s2)

//concat

//串比較

intstrcompare

(hstring s,hstring t)

return s.length-t.length;

}//strcompare

//串的簡單模式匹配

intindex

(hstring s1,hstring s2,

int pos)

else}if

(j>=s2.length)

return i-s2.length+1;

else

return0;

}//index

void

main()

else

printf

("未檢索到子串!");

break

;case6:

int wz[80]

;//wz陣列記錄子串出現的位置

i=0;

//計數器清零

printf

("please input s1:");

createstring

(s1)

;printf

("please input s2:");

createstring

(s2)

; pos=1;

//初始化起始檢索位置

while

(pos<=s1.length)

//檢索整個主串

//繼續下乙個子串的檢索}if

(i==0)

printf

("沒有檢索到需要的子串! ");

//如果退出迴圈後,i仍為,說明不存在匹配的子串

else

printf

("\n");

break

;case0:

exit(0

);}//switch

printf

("請輸入你的操作:\n");

}//while

}//main

to be continued

how2019/11/20

資料結構 實驗 串的基本操作

一 實現主要功能為 1 輸入模式串 目標串 2 根據目標串生成next和nextval陣列 3 根據next或者nextval進行匹配。二 程式截圖 三 1 include 2 include 3 include 4 include 5 using namespace std 67 define m...

資料結構之串的基本操作

1 串基本術語 空串 空串指長度為0的串,其不包含任何字元 空格串 不同於空串,它是由乙個或多個空格構成的串。雖然是空格,但在計算長度時要把空格的個數算在內 串比較 串的大小比較時以字元的ascii碼值作為依據。2 串基本操作 賦值操作 連線操作 求串長 竄的比較和求子串。3 串的儲存結構 順序儲存...

資料結構實驗 順序表的基本操作

include 1 1儲存結構 define maxsize 100 typedef struct sqlist 1 2初始化順序表並放入n個資料 void initlist sqlist l 1 3初始化順序表並放入n個資料 void listinsert sqlist l,int i,int e...