(四)順序串和鏈串

2021-07-28 06:27:24 字數 2452 閱讀 7041

1.串的概念

串,即是字串,也是一種特殊的線性表;其特殊性有兩方面:

1.在邏輯結構方面,串是僅限資料型別為字元,不能是其他資料型別;

2.在運算方面,將乙個串作為整體或者一部分進行運算。

2.幾個概念的區別:

1.空串與空格組成的字串:空串不包括任何字元,長度為0,而由空格組成的串由於空格也是字元,其長度為空格的個數;

2.子串與主串:串中任意個連續字元組成的子串行稱為子串,包含子串的串稱為主串;

3.字元和子串的位置:單個字元在串中的序號稱為字元在串中的位置;子串的第乙個字元在串中出現的位置稱為子串在串中的位置;

4.串相等:參加比較的串的長度相等且個位置的字元也相等;

5.串的比較:以ascii碼值進行比較;

3.串的順序結構儲存及運算:

3.1.串的順序結構儲存:   

1.順序結構儲存的串簡稱順序串,是以一組連續的儲存單元進行儲存串中的字串行。

2.乙個位元組需要8個位元組,因此乙個記憶體單元可以儲存多個字元,如乙個32位的記憶體單元可以儲存4個字元,因此,串的順序儲存方式有兩種:非緊縮格式和緊縮格式;

3.非緊縮格式是每個儲存單元只儲存乙個字元,緊縮格式是乙個儲存單元可以儲存多個字元;

4.一般採用的是非緊縮格式的定長儲存,即直接按預定的大小,為每個串分配固定長度的儲存區;

5.串的長度的標識有三種,常用的是:串末尾以不會出現在串中的字元'\0'作為結束標誌;

3.2.串的基本運算:

1.求串長:

int str_len(char s)

return i;

}

2.串連線:

int str_cat(char s1,char s2)else

s1[i]='\0';

}return 1;

}

3.求子串:

//將s中從第i個位置開始,長度為len的子串通過ss返回 

int sub_str(char s,char ss,int i,int len)else

return s1[i]-s2[i];

}

5.串插入:

//將串s2插入到s1中i的位置 

int str_insert(char s1,int i,char s2)else

temp[j]='\0';

j=0;

while(s2[j]!='\0')

j=0;

while(temp[j]!='\0')

s1[i]='\0';

}return 1;

}

4.3.串的鏈式結構儲存及運算:

4.1.概念:

1.串的鏈式儲存結構又稱鏈串,鏈串的形式一般與鍊錶相同,唯一的區別就是:鏈串中的乙個結點可以儲存多個字元;

2.將鏈串中每個結點所儲存的字元個數稱為結點大小;

3.結點大小大於1時,儲存密度高,但是操作效率不高。

4.2.鏈串的基本運算:

1.串賦值:將乙個陣列中的字元賦給鏈串

void init_str(linkstr **str,char s) 

q->next=null;

}

2.求串長:

int str_length(linkstr *s)

return i;

}

3.串連線:(t保持不變,因此不能直接將t進行操作)

void strcat(linkstr *s,linkstr *t)

p=s;

while(p->next!=null)

p->next=str->next;//進行鏈結

free(str);

}

4.求子串:

void strsub(linkstr *f,linkstr **s,int i,int len)else

for(k=0;kdata=p->data;

r->next=q;

r=q;

p=p->next;

}r->next=null;

}

}

5.串插入:

void strinsert(linkstr *s,int i,linkstr *t)

r=p->next;//將i元素結點位置的串暫時存在r中

p->next=t->next;//將t中的第乙個元素鏈結到i-1的後面,即i的位置

p=t;

while(p->next!=null)

p->next=r;

}

最簡字串查詢操作(靜態順序串,非鏈串)

demo3.cpp 定義控制台應用程式的入口點。程式實現從母串中找到字串,並且輸出字串在母串中的位置 2015年4月4日10 44 04 include stdafx.h include using namespace std intmain i temp 串字元不匹配 返回母串原來位置的下乙個字母...

順序串演算法

問題描述 採用順序儲存方式儲存串,實現下列演算法並測試 1 試編寫演算法實現將字串s中所有值為c1的字元換成值為c2的字元 void trans sqstring s,char c1,char c2 2 試編寫演算法,實現將已知字串所有字元倒過來重新排列。如abcdef改為fedcba。void i...

第四章 串 陣列和廣義表 順序串的基本操作

include define true 1 define false 0 define ok 1 define error 0 define overflow 2 define maxstrlen 255 typedef int status typedef int elemtype typedef...