西电软件大作业Word文件下载.docx

上传人:b****2 文档编号:15171861 上传时间:2022-10-28 格式:DOCX 页数:9 大小:103.85KB
下载 相关 举报
西电软件大作业Word文件下载.docx_第1页
第1页 / 共9页
西电软件大作业Word文件下载.docx_第2页
第2页 / 共9页
西电软件大作业Word文件下载.docx_第3页
第3页 / 共9页
西电软件大作业Word文件下载.docx_第4页
第4页 / 共9页
西电软件大作业Word文件下载.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

西电软件大作业Word文件下载.docx

《西电软件大作业Word文件下载.docx》由会员分享,可在线阅读,更多相关《西电软件大作业Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。

西电软件大作业Word文件下载.docx

p=q;

//p后移

q=r;

//q后移

}

}

分析:

2、//按字母、数字、其它字符分解单链表

voidresolve(linklist*head,linklist*letter,linklist*digit,linklist*other){

linklist*p;

while(head->

next!

p=head->

//p指向第一个节点

head->

next=head->

//缩短循环链表

if((p->

data>

='

A'

&

p->

data<

Z'

)||(p->

a'

z'

))

insert(letter,p);

elseif(p->

0'

9'

insert(digit,p);

elseinsert(other,p);

//判断字母、数字和其它字符

3、//判字符串是否中心对称

intsymmetry(linklist*head,stack*s){

intl=length(head);

intn=l/2;

intx;

linklist*p=head->

for(inti=1;

i<

=n;

i++){

push(s,p->

data);

//把单链表的前一半元素压入堆栈

p=p->

if(l%2==1)p=p->

//当链表长度为奇数时

while(p->

x=pop(s);

if(x==p->

data)

p=p->

elsereturn0;

return1;

4、//入队

voidenqueue(qu*sq,datatypex){

for(inti=0;

m;

sq->

sequ[i]=x;

//出队

datatype*dequeue(qu*sq)

{

datatype*temp;

if(sq->

quelen==0)

{

printf("

queueisempty\n"

);

returnNULL;

else{

temp=(datatype*)malloc(sizeof(datatype));

quelen--;

*temp=sq->

sequ[(sq->

rear-sq->

quelen+m)%m];

return(temp);

5、//顺序串的朴素模式匹配

intIndex(seqstring*S,seqstring*subS){

inti=1,j=1;

//位序从1开始

while(i<

=S->

len&

j<

=subS->

len)

if(S->

str[i-1]==subS->

str[j-1])

{

i++;

j++;

}//继续比较后面的字符

else

i=i-j+2;

j=1;

}//本趟不匹配,设置下一趟匹配的起始位序

if(j>

subS->

len)return(i-subS->

len);

//匹配成功

elsereturn(-1);

//匹配不成功

6、//添加删除子串算法

voidstrDelete(seqstring*S,intpos,intlen){

chartemp[maxsize];

if(pos>

=1&

len<

length-len+1){

strncpy_s(temp,S->

str,pos-1);

//strncpy_s与strncpy具有相同的功能,用于将源字符串复制到目的字符串

strcpy_s(temp+pos-1,maxsize,S->

str+pos+len-1);

//strcpy_s与strcpy具有相同的功能

strcpy_s(S->

str,maxsize,temp);

S->

length=S->

length-len;

7、//希尔排序

voidshellsort(rectyper[],intd[])

inti,j,k,h;

rectypetemp;

intmaxint=32767;

for(i=0;

i<

D1;

i++)

r[i].key=-maxint;

//设置T个监视哨

k=0;

do{

h=d[k];

//取一趟的增量

for(i=h+D1;

N+D1;

temp=r[i];

j=i-h;

while(temp.key<

r[j].key)

{

r[j+h]=r[j];

j=j-h;

}

r[j+h]=temp;

}//组内直接插入法排序

print(r,N);

//输出一趟的排序结果

k++;

}while(h!

=1);

8、//折半查找索引表,块内顺序查找

intblksearch(recordr[],indexidx[],keytypek,intn)

inti,low=0,high=n-1,mid,bh,find=0;

//折半查找索引表

while(low<

=high&

!

find)

mid=(low+high)/2;

if(k<

idx[mid].key)high=mid-1;

elseif(k>

idx[mid].key)low=mid+1;

high=mid-1;

find=1;

}

if(low<

n)

i=idx[low].low;

//块的起始地址

bh=idx[low].high;

//块的终止地址

//块内顺序查找

while(i<

bh&

r[i].key!

=k)i++;

if(r[i].key!

=k)i=-1;

returni;

9、//双向起泡排序

voiddbubblesort(sequenlistr[],intn)

inti=1,j,noswap=1;

sequenlisttemp;

while(noswap){

noswap=0;

for(j=n-i+1;

j>

=i+1;

j--)

if(r[j].key<

r[j-1].key)

noswap=1;

temp=r[j];

r[j]=r[j-1];

r[j-1]=temp;

for(j=i+1;

j<

=n-i;

j++)

if(r[j].key>

r[j+1].key)

r[j]=r[j+1];

r[j+1]=temp;

for(intk=1;

k<

k++)

printf("

%5d"

r[k].key);

\n"

i++;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动态背景

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1