五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

《數(shù)據(jù)結(jié)構(gòu)(C語言版)》串的定長(zhǎng)順序存儲(chǔ)

2022-04-03 10:39 作者:回到唐朝當(dāng)少爺  | 我要投稿

清華大學(xué)計(jì)算機(jī)系列教材? ?累計(jì)發(fā)行超400萬冊(cè)

嚴(yán)蔚敏 吳偉民 編著

數(shù)據(jù)結(jié)構(gòu)(C語言版)

以下是本人對(duì)該紫皮書第四章串中4.2.1節(jié)串的定長(zhǎng)順序存儲(chǔ)表示的代碼實(shí)現(xiàn),由于該存儲(chǔ)結(jié)構(gòu)非常簡(jiǎn)單,實(shí)用性也不高,與C語言中'\0'表示字符串的結(jié)束也不相同,而且只能靜態(tài)分配內(nèi)存,故沒有做成系統(tǒng)式地全部代碼,但是把課本上提到的關(guān)于這一節(jié)的全部?jī)蓚€(gè)函數(shù)均實(shí)現(xiàn)了,函數(shù)部分與課本完全相同

(貌似專欄把我縮進(jìn)吃了,懶得加了,另外建議用visual studio編譯)

代碼如下:

//串的定長(zhǎng)順序存儲(chǔ)表示

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

#include <stdlib.h>

#define TRUE 1

#define FALSE 0

#define OK 1

#define ERROR 0

#define INFEASIBLE -1

#define OVERFLOW -2

#define MAXSTRLEN 255//用戶可以在255以內(nèi)定義最大串長(zhǎng)

typedef int Status;

typedef unsigned char SString[MAXSTRLEN + 1];//0號(hào)單元存放串的長(zhǎng)度

/*注意這個(gè)數(shù)據(jù)結(jié)構(gòu)和C語言中字符串不同,后者是在字符串末尾設(shè)置'\0',這個(gè)是在0號(hào)位置存放串長(zhǎng)*/

Status Concat(SString& T, SString S1, SString S2);//連接兩個(gè)字符串

Status SubString(SString& Sub, SString S, int pos, int len);//用Sub返回串S的第pos個(gè)字符起長(zhǎng)度為len的字串

void ShowString(SString S);//打印字符串

int main()

{

SString MyStringA, MyStringB, ConnectStr;

unsigned char c;

int i = 1;

printf("請(qǐng)輸入字符串A:");

while ((c = getchar()) != '\n' && i < 256)

{

MyStringA[i] = c;

i++;

}

MyStringA[0] = i - 1;

fflush(stdin);//清空輸入緩沖區(qū),防止用戶輸入超過字符串所能存取的最大長(zhǎng)度

printf("請(qǐng)輸入字符串B:");

i = 1;

while ((c = getchar()) != '\n' && i < 256)

{

MyStringB[i] = c;

i++;

}

MyStringB[0] = i - 1;

fflush(stdin);//清空輸入緩沖區(qū),防止用戶輸入超過字符串所能存取的最大長(zhǎng)度

if (Concat(ConnectStr, MyStringA, MyStringB))

{

printf("字符串連接成功,未截?cái)郳n");

}

else

{

printf("字符串已連接,B字符串過長(zhǎng)已被截?cái)郳n");

}

ShowString(ConnectStr);

printf("尋找A的給定長(zhǎng)度的子串,請(qǐng)輸入子串的位置和長(zhǎng)度:");

int position, length;

scanf("%d%d", &position, &length);

SString sub;

if (SubString(sub, MyStringA, position, length))

{

ShowString(sub);

}

else

{

printf("子串位置錯(cuò)誤!\n");

}

return 0;

}

Status Concat(SString& T, SString S1, SString S2)//連接兩個(gè)字符串

{

Status uncut;//是否截?cái)?/p>

if (S1[0] + S2[0] < MAXSTRLEN)//未截?cái)?/p>

{

for (int i = 1; i <= S1[0]; i++)

{

T[i] = S1[i];

}

for (int i = S1[0] + 1; i <= S1[0] + S2[0]; i++)

{

T[i] = S2[i - S1[0]];

}

T[0] = S1[0] + S2[0];

uncut = TRUE;

}

else if (S1[0] < MAXSTRLEN)//截?cái)?/p>

{

for (int i = 1; i <= S1[0]; i++)

{

T[i] = S1[i];

}

for (int i = S1[0] + 1; i <= MAXSTRLEN; i++)

{

T[i] = S2[i - S1[0]];

}

T[0] = MAXSTRLEN;

uncut = FALSE;

}

else

{

for (int i = 0; i <= MAXSTRLEN; i++)

{

T[i] = S1[i];

}

uncut = FALSE;

}

return uncut;

}

Status SubString(SString& Sub, SString S, int pos, int len)//用Sub返回串S的第pos個(gè)字符起長(zhǎng)度為len的字串

{

if (pos<1 || pos>S[0] || len<0 || len>S[0] - pos + 1)

{

return ERROR;

}

for (int i = 1; i <= len; i++)

{

Sub[i] = S[pos + i - 1];

}

Sub[0] = len;

return OK;

}

void ShowString(SString S)//打印字符串

{

for (int i = 1; i <= S[0]; i++)

{

printf("%c", S[i]);

}

printf("\n");

}

《數(shù)據(jù)結(jié)構(gòu)(C語言版)》串的定長(zhǎng)順序存儲(chǔ)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
五峰| 明溪县| 峨山| 海宁市| 临颍县| 西和县| 汶上县| 桃源县| 肇州县| 大田县| 保定市| 阿巴嘎旗| 邹城市| 林口县| 海林市| 天长市| 高淳县| 孝义市| 讷河市| 佳木斯市| 准格尔旗| 德庆县| 黔江区| 唐山市| 会昌县| 阳原县| 台北县| 宁海县| 扶绥县| 分宜县| 涿州市| 巴中市| 清新县| 甘南县| 安岳县| 普宁市| 广东省| 淳安县| 禹州市| 建平县| 泽库县|