資料結構課程設計 串的基本操作演示

2021-07-31 17:03:51 字數 2609 閱讀 9428

3.4串的基本操作演示

一、 需求分析

1.用堆分配儲存表示實現hstring 串型別的最小操作子集。

2.實現串抽象型別的其餘基本操作(如聯接、刪除等),且不能使用c語言本身提供的串函式,必須自己構造新的函式實現串的基本操作。

3.本演示系統是乙個命令解釋程式,迴圈往復的處理使用者輸入的每一條命令,直至終止程式的命令為止。

4.引數的合法性必須嚴格檢查,要嚴格按照命令的輸入格式進行輸入,否則程式可能無法正確執行指令。

二、概要設計

實現串的抽象資料型別和實現其基本操作,程式中將涉及下列抽象資料型別:

1.定義串的基本主結構

adt string

資料關係:r1=

基本操作:

strcompare(hstring s,hstring t)

初始條件:s和t是已存在的hstring型別。

操作結果:比較其值,顯示結果「unequal」或「equal」。

strlength(hstring s)

初始條件:s是已存在的hstring型別。

操作結果:返回該串的長度。

concat(hstring s1,hstring s2)

初始條件:s1和s2是已存在的hstring型別。

操作結果:由s1和s2聯接成新串。

index(hstring s,hstring t)

初始條件:s和t是已存在的hstring型別。

操作結果:顯示第二個串在第乙個串中首次出現的起始位置。

replace(hstring m, hstring t, hstring v)

初始條件:m、t和v是已存在的hstring型別。

操作結果:將第乙個串中所有出現的第二個串用第三個串替換,顯示結果串的內部名和串值,原串不變。

substring(hstring s,int pos,int len)

初始條件:s是已存在的hstring型別。

操作結果:如果引數合法,則顯示子串的內部名和串值 。

strprint(hstring s)

初始條件:s是已存在的hstring型別。

操作結果:顯示串s的內部名和串值 。

getin(int n)

初始條件:處理命令串s1,

操作結果:把串值存入串頭表中

insert(int n)

初始條件:要給指定的串賦值,n為指定的串的內部名

操作結果:為指定內部名的串賦值

show()

初始條件:要求檢視輸入格式

操作結果:輸出各種命令的輸入格式

}adt string

二.儲存結構及相應的型別定義

公用標頭檔案header.h

#include

#include

#include

#include

#include

#define true 1

#define false 0

#define ok 1

#define error 0

#define overflow -2

#define maxlen 100

#define maxsize 50

typedef int status;

(1)順序儲存結構

typedef struct resulttype

resulttype,*result ;

typedef struct

hstring,*string;

typedef struct

strheadlist,*strhead;

三、詳細設計

void strcompare(hstring s,hstring t)

else

}printf("「equal」\n"); //比較完後,相等則顯示「equal」

}void concat(hstring s1,hstring s2) //由s1和s2聯接成新串

int strlength(hstring s)//返回s串的長度

void strprint(hstring s)

status substring(hstring s,int pos,int len)//求串s的子串

if(!len) //當子串長度為空

else

printf("子串的內部名和串值為:\n");//顯示新串的內部名和串值

printf("%5d",n);

strprint(kk->strhead[n]);

printf("\n");

return ok;

}status index(hstring s,hstring t)

{ //顯示第二個串在第乙個串中首次出現的起始位置

int m,i,j;

if(t.length==0)//若t串的長度為0,則引數非法

printf("引數非法\n");

else{

for(i=0;i<=s.length-t.length+1;i++)//查詢第二個串在第乙個串中首次出現的起始位置

{for(j=i,m=0;m if(m==t.length)

printf("第二個串在第乙個串中首次出現的起始位置:\n");

資料結構課程設計 基本設計

鄭州科技學院 課程設計 任務書 設計題目 實現順序表各種基本運算的演算法 專業班級 學號姓名 主要內容 編寫乙個程式,實現順序表的各種基本運算,並在此基礎上設計乙個主程式完成如下功能 1 初始化順序表l 2 依次採用尾插法插入a,b,c,d,e元素 3 輸出順序表l 4 輸出順序表l的長度 5 判斷...

資料結構符串的基本操作

院系專業 姓名 林楨曦學號 106052010235 級班年 月 日 採用順序結構儲存串,編寫乙個函式substr str1,str2 用於判定str2是否是str1的子串。問題描述編寫乙個函式,實現在兩個已知字串中找出所有非空最長公共子串的長度和最長公共子串的個數。實現要求輸出非空最長公共子串的長...

資料結構課程設計

指導書山東建築大學 電腦科學與技術學院 二 六年十二月 課程設計基本情況 課程名稱 資料結構課程設計 相關課程 c語言程式設計 visual c 程式設計 資料結構 適合專業 電腦科學與技術 網路工程 軟體工程 設計週數 2周 學分 2學分 開課學期 第4學期 開課單位 電腦科學與技術學院 一 課程...