當前位置:首頁 » 編程語言 » c語言數據結構串
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言數據結構串

發布時間: 2022-06-08 02:19:21

『壹』 數據結構(c語言)中字元串的問題

空格串表示字元串裡面的元素是「空格」

空格是確確實實存在的字元 只是不能顯示的列印在屏幕上而已

在ASCII碼中空格對應的是32(十進制 十六進制是20h)與別的字元對待是相同的

而空串則是表示字元串為空 即"" 也就是字元串中不含任何字元 字元長度為0

一般用作對新定義的字元串進行初始化

他們的區別還是蠻大的 不過有一個概念叫空字元到比較容易混淆

空字元是『\0』他是確實存在的字元 在字元數組中表示字元串的結束

『貳』 數據結構C語言串聯接代碼怎麼解釋

很簡單,數組的0元素里保存是串的長度。兩個點前後的數值表示的是下標范圍。先復制S1,再復制S2。能夠把最簡單的一個演算法寫成這么復雜的一個樣子的,不愧是專家。其實這些東西都不難,但要想看懂專家寫的書,一定要提高甲骨文的閱讀能力。建議你找些國外的書參照一下

『叄』 數據結構(C語言)串問題

按這個程序的意思
1...s1[0]應該是從1到s1的長度,所以t[1..s1[0]]就代表一個字元串,t[1..s1[0]]=s1[1..s1[0]]; 是直接給字元串賦值。

但是在C程序裡面不能用這種簡略寫法。你看的書好象太不規范了。。。
1...s1[0]應該用for(i=1;i<=s1[0];i++)表示
而且似乎很少有「下標為0的位置存放串的長度」...
不知道是不是我孤陋寡聞...

『肆』 數據結構c語言串的問題

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
usingnamespacestd;
typedefstruct{
char*ch;
intlength;
}HString;

intStrLength(HString&T)
{
inti=0;
while(T.ch[i]!=0)
{i++;}
T.length=i;
returnT.length;
}

voidgetString(HString&T,intlen)
{
T.length=len;
T.ch=(char*)malloc(T.length+1);
inti;
for(i=0;i<T.length;i++)
cin>>T.ch[i];
T.ch[i]='';//這里需要自己補字元串的結束符,不然StrLength得到的長度不正確。
}
intIndex(HString&S,HString&T,intpos)
{
inti=pos-1,j=0;
while(i<S.length&&j<T.length)
{if(S.ch[i]==T.ch[j]){i++;j++;}
else{i++;j=0;}//主字元串是需要挨個遍歷的,不匹配的情況下只需要重新匹配子字元串
}
if(j>=T.length)returni-T.length+1;
cout<<(i-T.length+1);
return0;
}

voidmain()
{
HStringS;
HStringT;
getString(S,10);
getString(T,5);
StrLength(S);
StrLength(T);
Index(S,T,1);
}

『伍』 c語言 數據結構字元串問題

這是因為在數據結構中使用的是類C語言,也就是不標準的程序語言,所以才會有這種情況,而在標準的程序中是使用雙引號來表示字元串,單引號來表示字元!

『陸』 數據結構(C語言)串的問題

T[1..S1[0]]=S1[1..S1[0]]; 指把S1[1]到S1[S1[0]]分別賦給T[1]到 T[S1[0]] 其中 S1[0]為S1串的長度
T[S1[0]+1..S1[0]+S2[0]]=S2[1..S2[0]]; 這句指把S2[1]到S2[S2[0]]
賦給T[S1[0]+1]到T[S1[0]+S2[0]] 你想啊T串的1到S1[0]位置已經賦好了,接下來當然是T串的S1[0]+1的位置到S1[0]+S2[0]的位置了,這里你把S1[0],S2[0]看成一個整形常數就可以了。
T[0]=S1[0]+S2[0]; 後面都不用說了吧

『柒』 c語言數據結構串的基本操作

1、頭文件缺了#include<malloc.h>

2、指針變數同普通變數一樣,使用之前不僅要定義說明, 而且必須賦予具體的值。防止使用了未經賦值的指針。未經賦值的指針變數不能使用, 否則將造成系統混亂,甚至死機 在編譯時會出現警告
Hstring *s=NULL,*s1=NULL,*s2=NULL,*sub=NULL;

3、substring(sub,s,pos,len); pos、len的值不知道就傳入了形參

4、上面修改後,運行到 scanf("%d",&s->length);s定義的是指針類型,應該指向一個Hstring型的變數後,才能用s->length。否則出錯
我目前就找了這么多

『捌』 求解數據結構c語言中串的問題

(如果I和m之間只有一個'號,沒有空格的話)

長度應該為13
SubString(s1,8,5)的結果是tuden,(意思是說從第8個字元開始,拿出5個字元)
index(s1,'u')的功能是在字元串中s1查找目的字元u,如果找到了,就返回u的位置值,沒有找到就返回0。s1中有u這個字元,位置為9,所以結果為9

Replace(s1,』stidemt』,s3) 格式有問題;
replace(s,start,t,v),即要求在主串s中,從位置start,開始查找是否存在子串t,若主串s中存在子串t,則用子串v替換子串t 且函數返回1,若主串s中不存在子串t,則函數返回0.

『玖』 C語言數據結構串的模式匹配演算法問題

和while循環裡面的一樣,i指針退回原來的位置並指向下一位,應該是多少?i-j+2是吧!
這里不用指向下一位,直接return它的位置就行了,於是return
i-j+1
i-j+1和i-t[0]相等!

『拾』 數據結構用C語言寫的串怎麼寫主函數

/*

串a:

abcdefghijklmnopqrstuvwxyz

串b:

01234567890123456789

串a:

串c:

abcdefghijklmnopqrstuvwxyz

Press any key to continue

*/

#include<stdio.h>
#defineMAXLEN40

typedefstruct{
charch[MAXLEN];
intlen;
}SString;

voidStrInsert(SString*s,intpos,SStringt){
inti;
if(pos<0)pos=0;
if(pos>s->len-1)pos=s->len;
if(s->len+t.len<=MAXLEN){//長度適中
for(i=s->len+t.len-1;i>pos;i--)
s->ch[i]=s->ch[i-t.len];
for(i=0;i<t.len;i++)s->ch[i+pos]=t.ch[i];
s->len+=t.len;
}
elseif(pos+t.len>MAXLEN){//長度超限1,從pos後不再有s的內容
for(i=pos;i<MAXLEN;++i)
s->ch[i]=t.ch[i-pos];
s->len=MAXLEN;
}
else{//長度超限2,從pos+t.len後還有s的部分內容
for(i=MAXLEN-1;i>=pos+t.len;--i)
s->ch[i]=s->ch[i-t.len];
for(i=0;i<t.len;++i)
s->ch[i+pos]=t.ch[i];
s->len=MAXLEN;
}
}

//在s中從pos位置開始刪除len個字元
intStrDelete(SString*s,intpos,intlen){
inti;
if(pos<0||pos>s->len)return0;
if(pos+len<s->len){//刪除s的中間部分
for(i=pos;i<pos+len;i++)
s->ch[i]=s->ch[i+len];
s->len-=len;
}
else{//len太大
s->len=pos;
}
return1;
}

SStringStrCopy(SString*s,SStringt){
inti;
for(i=0;i<t.len;i++)s->ch[i]=t.ch[i];
s->len=t.len;
return*s;
}

intStrEmpty(SStrings){
if(s.len==0)return1;
return0;
}

intSteCompare(SStrings,SStringt){
inti;
for(i=0;i<s.len&&i<t.len;i++)
if(s.ch[i]!=t.ch[i])return(s.ch[i]-t.ch[i]);
return(s.len-t.len);
}

intSteLength(SStrings){
returns.len;
}

voidStrClear(SStrings){
s.len=0;
}

voidStrShow(constSStrings){
inti;
for(i=0;i<s.len;++i)
printf("%c",s.ch[i]);
printf(" ");
}

intmain(){
SStringstra={"abcdefghijklmnopqrstuvwxyz",26};
SStringstrb={"01234567890123456789",20},strc;
StrCopy(&strc,stra);
printf("串a: ");
StrShow(stra);
printf("串b: ");
StrShow(strb);
StrInsert(&stra,22,strb);//
printf("串a: ");
StrShow(stra);
printf("串c: ");
StrShow(strc);
return0;
}