資料結構實踐專案——串
本文針對資料結構基礎系列網路課程(4):串。
1. 串的基本概念及導學
2. 串的順序儲存及其基本操作實現
3. 串的順序儲存應用
4. 串的鏈式儲存及其基本操作實現
5. 串的模式匹配(Brute-Force演算法)
6. 串的模式匹配(KMP演算法)
【專案1 - 建立順序串的演算法庫】
定義順序串的儲存結構,實現其基本運算,並完成測試。
要求:
1、標頭檔案sqString.h中定義資料結構並宣告用於完成基本運算的函式。對應基本運算的函式包括:
void StrAssign(SqString &s,char cstr[]); //字串常量cstr賦給串s
void StrCopy(SqString &s,SqString t); //串t複製給串s
bool StrEqual(SqString s,SqString t); //判串相等
int StrLength(SqString s); //求串長
SqString Concat(SqString s,SqString t); //串連線
SqString SubStr(SqString s,int i,int j); //求子串
SqString InsStr(SqString s1,int i,SqString s2); //串插入
SqString DelStr(SqString s,int i,int j) ; //串刪去
SqString RepStr(SqString s,int i,int j,SqString t); //串替換
void DispStr(SqString s); //輸出串
2、在sqString.cpp中實現這些函式
3、在main函式中完成測試,包括如下內容:
(1)建立串s:abcdefghijklmn和串s1:123
(2)輸出串s和s1
(3)輸出串s的長度
(4)在串s的第9個字元位置插入串s1而產生串s2
(5)輸出串s2
(6)刪除串s第2個字元開始的5個字元而產生串s2
(7)輸出串s2
(8)將串s第2個字元開始的5個字元替換成串s1而產生串s2
(9)輸出串s2
(10)提取串s的第2個字元開始的10個字元而產生串s3
(11)輸出串s3
(12)將串s1和串s2連線起來而產生串s4
(13)輸出串s4
[
【專案2 - 建立鏈串的演算法庫】
定義鏈串的儲存結構,實現串的基本運算,並完成測試。
具體要求參照專案1。
[參考解答]
【專案3-順序串演算法】
採用順序儲存方式儲存串,實現下列演算法並測試:
(1)試編寫演算法實現將字串S中所有值為c1的字元換成值為c2的字元:
void Trans(SqString *&s, char c1, char c2);
(2)試編寫演算法,實現將已知字串所有字元倒過來重新排列。如ABCDEF改為FEDCBA。
void Invert(SqString &s)
(3)從串s中刪除其值等於c的所有字元。如從message中刪除’e’,得到的是mssag。
void DellChar(SqString &s, char c)
(4)有兩個串s1和s2,設計一個演算法求一個這樣的串,該串中的字元是s1和s2中公共字元。所謂公共子串,是由在s1中有,且在s2中也有的字元構成的字元。例s1為”message”,s2為”agent”,得到的公共子串是”eage”。
SqString CommChar(SqString s1,SqString s2);
[參考解答]
【專案4-字串加密】
一個文字串可用事先編制好的字元對映表進行加密。例如,設字元對映表為:
abcdefghijklmnopqrstuvwxyz
ngzqtcobmuhelkpdawxfyivrsj
則字串“lao he jiao shu ju jie gou”被加密為“enp bt umnp xby uy umt opy”。
設計一個程式,實現加密、解密演算法,將輸入的文字進行加密後輸出,然後進行解密並輸出。
[參考解答]
【專案5 - 計數的模式匹配】
採用順序結構儲存串,編寫一個演算法計算指定子串在一個字串中出現的次數,如果該子串不出現則為0。
提示:無論BF模式匹配演算法,還是KMP演算法,都是在找到子串substr後就退出了。解決這個問題,要查詢完整個字串,並將出現的次數記下來。改造這兩個演算法吧。
[參考解答]
相關推薦
資料結構實踐專案——串
本文針對資料結構基礎系列網路課程(4):串。 1. 串的基本概念及導學 2. 串的順序儲存及其基本操作實現 3. 串的順序儲存應用 4. 串的鏈式儲存及其基本操作實現 5. 串的模式匹配(Brute-Force演算法) 6. 串的模式匹配(K
*第七週*資料結構實踐專案三【負數把整數趕出佇列】
【專案 - 負數把正數趕出佇列】 設從鍵盤輸入一整數序列a1,a2,…an,試程式設計實現:當ai>0時,ai進隊,當ai<0時,將隊首元素出隊,當ai=0時,表示輸入結束。要求將佇列處
資料結構實踐專案——樹和二叉樹
【專案1 - 二叉樹演算法庫】 定義二叉樹的鏈式儲存結構,實現其基本運算,並完成測試。 要求: 1、標頭檔案btree.h中定義資料結構並宣告用於完成基本運算的函式。對應基本運算的函式包括: <code class="hljs scss has-numbering" style="dis
資料結構實踐專案——圖的基本運算及遍歷操作
本文是針對[資料結構基礎系列(7):圖]中第1-9課時的實踐專案。 0701 圖結構導學 0702 圖的定義 0703 圖的基本術語 0704 圖的鄰接矩陣儲存結構及演算法 0705 圖的鄰接表儲存結構及演算法 0706 圖的遍歷 0707 非連通
資料結構實踐專案——佇列
7.佇列的定義 8. 順序隊的儲存及基本操作 9. 環形佇列的儲存及基本操作 10. 佇列的鏈式儲存結構及其基本運算的實現 11. 佇列的應用-迷宮問題 12. 雙端佇列 【專案1 - 建立順序環形佇列演算法庫】 定義順序環形佇列
第七週專案五C/C++資料結構實踐——排隊看病模擬(佇列)
/* *Copyright (c) 2017,煙臺大學計算機與控制工程學院 *All rights reserved. *檔名稱:.cpp *作 者:高晶 *完成日期:2017年11月09日 *版 本 號:v1.0 * 資料結構實踐
資料結構實踐 停車場模擬 棧和佇列綜合
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
資料結構——求一個串中出現的第一個最長重複子串
求一個串中出現的第一個最長重複子串。 輸入串:36123459836121234569 求最長重複子串: 原串:36123459836121234569 最長重複子串:12345 關於這個問題有KMP優化,暫時還沒掌握 下面這個演算法在輸入輸出方面還有待優化 #include <
資料結構中的串
C語言中有個字串,資料結構中有個串,聯絡是二者都是儲存字元的,區別在於前者我們直接定義陣列儲存,以\0結尾,如 char str[size]; 而後者我們是把字串看成一個線性表,定義成結構體形式,可以用連結串列,也可以是順序表(結尾用length控制),以下是定義:如 //堆分
大話資料結構筆記_串
串的定義: 串(string)是由零個或者多個字元組成的有限序列, 又名叫字串。 串的比較: 字典序 串的ADT:
SDUTOJ3311資料結構實驗之串三:KMP應用
資料結構實驗之串三:KMP應用 (PS:這題巨坑 嗚嗚嗚。。) https://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Contest/contestproblem/cid/2710/pid/3311 Time Limit:&nbs
資料結構實驗之串一:KMP簡單應用
Problem Description 給定兩個字串string1和string2,判斷string2是否為string1的子串。 Input 輸入包含多組資料,每組測試資料包含兩行,第一行代表string1(長度小於1000000),第二行代表string2(長度小
資料結構實驗之串三:KMP應用
Problem Description 有n個小朋友,每個小朋友手裡有一些糖塊,現在這些小朋友排成一排,編號是由1到n。現在給出m個數,能不能唯一的確定一對值l和r(l <= r),使得這m個數剛好是第l個小朋友到第r個小朋友手裡的糖塊數? Input 首先輸入一
資料結構之順序串的基本操作——C語言
#include <stdio.h> #include <stdlib.h> #define MaxSize 100 typedef struct { char data[MaxSize]; int len; }SqString; voi
04734資料結構實踐考試複習
考試情況 實踐考試考試學校很重要,我是在北大考,北大曆年考題都這樣的: 至於真實情況,我考完試再來補充分享。 2. 複習情況 考題答案,我的版本: 1.編一C程式,它能根據輸入的字元(字母或*)序列來構造一棵二叉樹,並能輸出該二叉樹後續和中序序列,並計算出
資料結構實踐——B-樹的基本操作
【專案 - B-樹的基本操作】 實現B-樹的基本操作。基於序列{4, 9, 0, 1, 8, 6, 3, 5, 2, 7}完成測試。 (1)建立對應的3階B-樹b,用括號法輸出b樹。 (2)從b中分別刪除關鍵字為8和1的節點,用括號法輸出刪除節點後的b
資料結構陣列與串
知識要點: 串的基本概念、串的儲存結構和相關的操作演算法; 陣列的儲存結構,在順序儲存的情況下,陣列元素與儲存單元的對應關係; 稀疏矩陣的儲存結構和特點以及基本操作。 字串匹配演算法(例如KMP演算法)。 串的定義:由一個或多個字元組成的有限序列;內字元的個數稱之為
day2——資料結構實驗之串三:KMP應用
資料結構實驗之串三:KMP應用 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 有n個小朋友,每個小朋友手裡有一些糖塊,現在這些小朋友排成一排,編號是由1到n。現在給出m個數,能不能唯一
資料結構學習筆記-串(C語言實現)
串由零個或多個字元組成,說白了就是字串。串的儲存方式相對於線性表來講有些不同,他分為以下幾種:順序儲存、堆分配儲存、鏈式儲存。順序儲存通常在陣列中的頭元素存放字串長度。堆分配儲存通常會動態分配空間。鏈式儲存分為兩種,一種是每個節點存放一個字元(比較浪費空間),另一種則是每個節
資料結構實踐(有的資料結構課後習題答案),紅色是答案
第1章 緒論 習題 1.簡述下列概念:資料、資料元素、資料項、資料物件、資料結構、邏輯結構、儲存結構、抽象資料型別。 2.試舉一個數據結構的例子,敘述其邏輯結構和儲存結構兩方面的含義和相互關係。 3.簡述邏輯結構的四種基本關係並畫出它們的關係圖。 4.儲存結構