院系專業
姓名_林楨曦學號___106052010235**
級班年____月____日
採用順序結構儲存串,編寫乙個函式substr(str1,str2),用於判定str2是否是str1的子串。
問題描述編寫乙個函式,實現在兩個已知字串中找出所有非空最長公共子串的長度和最長公共子串的個數。
實現要求輸出非空最長公共子串的長度和最長公共子串的個數。
字串匹配:
①串長度 strlen(sstring str)
②判斷是否為子串 substr(sstring str1,sstring str2)
公共字串:
①串長度 strlen(sstring str)
②最大公共串長度函式 maxlen()
③求公共串個數函式 substrnum()
輸入形式:字串。
(1)adt sstring
結構關係:r=
基本操作:
strlen(sstring str
操作前提:字串str已存在
操作結果:求str的長度
substr(sstring str1,sstring str2)
操作前提:字串str已存在
操作結果:判斷str2是不是str1的子串
}adt sstring
結構關係:r=
基本操作:
strlen(sstring str
操作前提:字串str已存在
操作結果:求str的長度
maxlen(sstring str1,sstring str2,sstring str)
操作前提:字串str1,str2,str已存在
操作結果:求str1和str2的最大公共子串長度,並將該子串賦給str
substrnum(sstring str1,sstring str2)
操作前提:字串str1,str2已存在
操作結果:求在str1中str2子串的個數
}(2)字串匹配:
本程式包含3個函式:
主函式main()
求串長函式 strlen(sstring str)
(2)字串匹配
int substr(sstring str1,sstring str2)
}如果j==m則返回1;
否則返回0;
}公共字串:
型別定義
typedef unsigned char sstring[maxstrlen+1];
基本操作的偽碼演算法
(1)求串長
int strlen(sstring str)
(2)最大公共串長度
int maxlen(sstring str1,sstring str2,sstring str)
str[max]='\0';
返回max;
}}}(3)求公共串個數
int substrnum(sstring str1,sstring str2) {
定義變數 int i=0,j=0,n,m,k=0;
n=strlen(str1);
m=strlen(str2);
當str1[i]不為空時{
當str2[j] 不為空時{
如果str1[i]==str2[j] 則
否則如果str1[i]為空{則退出迴圈;}}
如果str2[j]為空
}返回k;
}除錯時出現錯誤,經過檢查發現在某些地方出現死迴圈問題。
(1)字串匹配:
程式名為test6-1.exe,程式執行過程如下:
提示使用者輸入第乙個字串;
使用者按要求輸入乙個字串;
提示使用者輸入第二個字串;
使用者按要求輸入二個字串;
呼叫字串匹配函式,並在螢幕上顯示匹配結果。
(2)公共字串:
程式名為test6-2.exe,程式執行過程如下:
提示使用者輸入第乙個字串;
使用者按要求輸入乙個字串;
提示使用者輸入第二個字串;
使用者按要求輸入二個字串;
呼叫maxlen函式,並在螢幕上顯示最大公共子串長度。
再呼叫substrnum函式分別進行比較,並將結果輸出。
字串匹配:
(1)螢幕顯示:請輸入第乙個字串:
輸入abcdefghi後,
螢幕顯示:請輸入第二個字串:
輸入def後,
螢幕顯示:str2是str1的子串。
(2)螢幕顯示:請輸入第乙個字串:
輸入abcdefgi後,
螢幕顯示:請輸入第二個字串:
輸入dif後,
螢幕顯示:str2不是str1的子串。
(1)(2)
公共字串:
螢幕顯示:請輸入第乙個字串:
輸入abcdefghijklmn後,
螢幕顯示:請輸入第二個字串:
輸入abikabnmabw後,
螢幕顯示:最大公共子串長度為2
公共子串個數為3
資料結構(c語言版)
源程式檔案如下:
字串匹配:
#include
#define maxstrlen 255
typedef unsigned char sstring[maxstrlen+1];
int strlen(sstring str)strlen(sstring str)
return i;
}int substr(sstring str1,sstring str2)
else
}if(j==m)
return 1;
else return 0;
}void main()
公共字串:
#include
#define maxstrlen 255
typedef unsigned char sstring[maxstrlen+1];
資料結構C語言串的基本操作
串的基本操作 include include include define m 100 typedef structhstr void main printf 串中字元為 n for i 0 ilength i printf c l ch i printf n break case 2 break ...
資料結構課程設計 串的基本操作演示
3.4串的基本操作演示 一 需求分析 1 用堆分配儲存表示實現hstring 串型別的最小操作子集。2 實現串抽象型別的其餘基本操作 如聯接 刪除等 且不能使用c語言本身提供的串函式,必須自己構造新的函式實現串的基本操作。3 本演示系統是乙個命令解釋程式,迴圈往復的處理使用者輸入的每一條命令,直至終...
資料結構03棧的基本操作
院系專業 姓名 林楨曦學號 106052010235 級班年 月 日 編寫棧的基本操作函式 分別用順序和鏈結兩種方式實現 呼叫進棧函式建立乙個棧,讀取棧頂元素,刪除棧中元素,並且輸出棧中所有元素。順序棧 1 建立空棧 int initstack sqstack s 2 進棧 void push sq...