ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:17.52KB ,
资源ID:9538188      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9538188.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(顺序串的基本操作.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

顺序串的基本操作.docx

1、顺序串的基本操作#include#include#define OK 1#define ERROR 0int MAX_SIZE = 50 ;typedef struct char* pData; int length; / 字符串的长度SeqString;/ 顺序串的初始化SeqString* InitString(SeqString *L) if (NULL=L) L=(SeqString*)malloc(sizeof(SeqString); /为串申请空间 if(!L) printf(顺序串初始化失败!n); /申请失败输出的提示语 return NULL; L-pData=(char*)

2、malloc(MAX_SIZE+1)*sizeof(char); /为串的元素申请空间 if(!L-pData) printf(顺序串初始化失败!n); free(L); /初始化失败释放串的空间 return NULL; L-pData0=0; /初始化的传为空的 L-length=0; /穿的长度为0 return L;/ 顺序串的销毁int DestroyString(SeqString *L) if(!L) return ERROR; if(L-pData) free(L-pData); /逐个释放串的空间 L-pData=NULL; L-length=0; /串的长度为0 retur

3、n OK;/ 串赋值1: 从char*复制, 要求des是有效的顺序串,src为有效的字符串指针,即非NULLint CopyFromChars(SeqString *des, char *src) int k=0; for (k=0; *(src+k) & kpDatak=*(src+k); /把串src逐个复制到des des-pDatak=0; /结束串 des-length=k; /串的长度为k return OK;/ 串赋值2: 从SeqString* 复制int CopyFromSeqString(SeqString *des, SeqString *src) int k=0; f

4、or (k=0; klength; k+) des-pDatak=src-pDatak; /把串逐个赋给des des-length=src-length; /复制后的串的长度为原串的长度 return OK;/ 串连接int ConnectStrings(SeqString *des, SeqString *src) int k=0; if (des-length + src-length MAX_SIZE) printf(两个字符串长度之和大于顺序串的最大长度!n); return ERROR; for (k=0; klength; k+) des-pDatades-length+k=sr

5、c-pDatak; /把第二个串复制到第一个串的尾部 des-length += src-length; /新串的长度等于两个串长度想加 return OK;int ReverseString(SeqString *L) int k=0; char temp; if (L-length=1) return OK; for(k=0; klength/2; k+) temp=L-pDatak; L-pDatak=L-pDataL-length-1-k; L-pDataL-length-1-k=temp; /交换对应位置的值 return OK;/ 输出顺序串中的每个元素void PrintStri

6、ng(SeqString *L) if(!L | !L-pData) printf(顺序串不存在!n); return; if(0=L-length) printf(顺序串是空的!n); return; printf(串中的元素有:t); printf(%sn, L-pData); /一次输出串中的元素 printf(n);/ 置空串int SetEmpty(SeqString *L) if(!L-pData) return ERROR; L-pData0=0; /把串置空 L-length=0; /串的长度为1 return OK;/ 求串长int GetStringLength(SeqSt

7、ring *L) if(L-pData) return L-length; /返回串的长度 return -1; /顺序串没有分配内存时, 返回-1/ 按位置查找元素: i=0表示第一个元素char GetChar(SeqString *L, int i) if(0=i | !L-pData | i=L-length) printf(顺序串不存在或是为空串!n); exit(EXIT_FAILURE); return L-pDatai; /返回第i个位置的长度/ 查找元素第一个位置, 若无返回-1char GetPosition(SeqString *L,char x) int k=0; if

8、(!L-pData) printf(顺序串不存在!n); exit(EXIT_FAILURE); for(k=0;klength;k+) if (x=L-pDatak) return k; /返回要查找的元素的位置 return -1; / 表示顺序串中无此元素/ 判断是否为空: 1为空, 0为非空int IsEmpty(SeqString *L) if(!L-pData) printf(顺序串不存在!n); exit(EXIT_FAILURE); return L-length=0;/ 求子串SeqString* Substring(SeqString* L, int index, int

9、len) SeqString* temp=NULL; int k=0; if(index0 | lenL-length) printf(参数不合法!n); return NULL; temp=InitString(temp); for(k=0; kpDatak=L-pDataindex+k; /把第i个位置以后的元素赋给新串 temp-pDatak=0; /结束新串 temp-length=len; /新串的长度为截取的子串的长度 return temp; / 串比较,相等返回0,第1个小于第2个,返回1,第1个大于第2个,返回1int StringCompare(SeqString *str

10、1, SeqString *str2) int flag=0; int minLen; int k=0; if(!str1 | !str2) printf(某个字符串不存在!); return -10; / 表示不可比较 minLen=(str1-length str2-length ? str2-length : str1-length)+1; for (k=0; kpDatak-str2-pDatak; /把串1中元素减串2中的元素结果赋给flag if(!flag) return flag; else return flag0 ? 1:-1; / 子串定位: 若substr在str中出现

11、,则返回第1次出现的位置;否则返回1int SubstringLocate(SeqString *str, SeqString* substr) int flag=-1, i, j; if(!str | !substr | str-lengthlength) return flag; for(i=0; ilength-substr-length; i+) /判断两串的长度是否相等 for(j=0; jlength; j+) if(str-pDatai+j-substr-pDataj) /判断两串的对应元素是否相等 break; if(j=substr-length) return i; ret

12、urn -1;/ 串插入int SubstringInsert(SeqString* L, int index, SeqString* str) int k=0; SeqString* substr=NULL; / 为的是可以串自身插入到自身 if(!L | !L-pData | !str | !str-pData | indexlength + str-lengthMAX_SIZE) return ERROR; substr=InitString(substr); /初始化新串 CopyFromSeqString(substr, str); /把串复制 for(k=L-length; k=i

13、ndex; k-) L-pDatak+substr-length=L-pDatak; / 先移动L中index起所有后面的元素 / 把子串插入 for (k=0; klength; k+) L-pDataindex+k=substr-pDatak; L-length += str-length; /新串的长度是两个串的和 DestroyString(substr); /销毁串substr substr=NULL; return OK;/ 子串删除int SubstringDelete(SeqString* L, int index,int len) int k=0; if(index0 | l

14、enL-length) printf(参数不合法n); return ERROR; for(k=0;klength-(index+len); k+) L-pDataindex+k=L-pDataindex+len+k; /把要删除的子串前移 L-length-=len; /串长度减len return OK;/ 串替换int SubstringSubstitute(SeqString*L, int index, SeqString* str) int k=0; SeqString* substr=NULL; if(!L | !L-pData | !str | !str-pData | inde

15、xlengthMAX_SIZE) return ERROR; substr=InitString(substr); /初始化串 CopyFromSeqString(substr, str); /复制串 for (k=0;klength;k+) L-pDataindex+k=substr-pDatak; /把串中的元素 L-length = index + str-length; DestroyString(substr); substr=NULL; return OK;/ 比较两个字串是否相等int IsEqual(SeqString* str1, SeqString* str2) int k

16、=0; if(!str1 | !str1-pData | !str2 | !str2-pData) return 0; / 若有一个字符串不存在, 返回0 if (str1-length != str2-length) return 0; / 若长度不相等, 返回0 while (klength & !(str1-pDatak-str2-pDatak) k+; / 比较相应字符 if (k=str2-length) return 1; else return 0; void main() SeqString *L=NULL, *des=NULL, *subL=NULL; L=InitStrin

17、g(L); / 初始化顺序串 des=InitString(des); subL=InitString(subL); printf(复制串abcd:); CopyFromChars(des, abcd); PrintString(des); printf(复制串abc:); CopyFromChars(L, abc); PrintString(L); printf(判断两串是否相等:); printf(%d n, IsEqual(L, des); printf(复制串abcdefgh:); CopyFromChars(L, abcdefgh); PrintString(L); / 打印顺序串

18、printf(截取子串%sn,*Substring(L, 4, 2); printf(子串位置: %dn,SubstringLocate(L, Substring(L, 4, 2); SubstringSubstitute(L, 3, L); PrintString(L); /打印顺序串 SubstringInsert(L, 9, L); PrintString(L); / 打印顺序串 SubstringDelete(L, 1, 2); PrintString(L); / 打印顺序串 subL=Substring(L, 1, 4); printf(比较大小 %dn, StringCompare

19、(subL, L); PrintString(subL); CopyFromSeqString(des, L); PrintString(des); printf(比较大小 %dn, StringCompare(des, L); ConnectStrings(des, L); / 顺序的连接 PrintString(des); ReverseString(L); PrintString(L); / 打印顺序串 printf(%dn, GetPosition(L, 10); printf(%dn, GetStringLength(L); if(IsEmpty(L) printf(顺序串是空的n); else printf(顺序串是非空的n); SetEmpty(L); / 把顺序串置空 PrintString(L); / 打印顺序串 DestroyString(L); / 不要忘了 PrintString(L); / 打印顺序串 DestroyString(des); / 销毁顺序串 PrintString(des); / 打印顺序串 DestroyString(subL); / 销毁顺序串 PrintString(subL); / 打印顺序串 if (!L) free(L); if (!des) free(des);

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

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