掌握這種抽象資料型別的特點;熟練掌握串的順序儲存結構表示和基本操作,並能利用這些基本操作實現串的其他各種操作。
分別用兩種儲存方式實現
串的定長順序儲存實現
//串的定長順序儲存結構
#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...