当前位置:首页 » 编程语言 » 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;
}