c 数据结构 顺序串
来源:互联网 发布:centos安装sftp 编辑:程序博客网 时间:2024/06/10 23:32
/* * 顺序 */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <malloc.h>#define OK 1#define ERROR -1#define OVERFLOW -2#define MAXSIZE 255typedef int statue;typedef char Elemtype;typedef struct {char *pBase;int chunsize;}HString;//函数的前置声明statue Strini(HString &str);//初始化statue StrAssign(HString &str,char *val);void Strshow(HString str);bool isEmpty(HString str);statue Strcopy(HString &str1,HString str2);int Strlength(HString str);statue Concat(HString &str1,HString str2);//str2 链接到str1后面statue SubString(HString &sub,HString s,int pos,int length);int StrCompare(HString str1,HString str2);//比较两个字符串大小 1 0 -1int Index(HString str1,HString str2);//str2 第一次在 str1 中的位置int main(void){HString str,str2;Strini(str);Strini(str2);char val[255];gets(val);StrAssign(str,val);gets(val);StrAssign(str2,val);//printf("%d\n",StrCompare(str,str2));//Concat(str,str2);//SubString(str2,str,4,5);//Strshow(str2);printf("%d\n",Index(str,str2));return 0;}statue Strini(HString &str){str.pBase=(Elemtype *)malloc(sizeof(Elemtype)*MAXSIZE);if(str.pBase==NULL){printf("內存分配失敗\n");exit(OVERFLOW);}str.chunsize=0;return OK;}statue StrAssign(HString &str,char *val){int i,length;length=strlen(val);if(length>MAXSIZE){printf("子串过大\n");return ERROR;}for(i=0;i<length;i++){str.pBase[i]=val[i];}str.chunsize=length;return OK;}void Strshow(HString str){int i;if(isEmpty(str)){printf("This chuan is empty\n");exit(-1);} for(i=0;i<str.chunsize;i++){printf("%c",str.pBase[i]);}printf("\n");}bool isEmpty(HString str){if(str.chunsize==0)return true;return false;}statue Strcopy(HString &str1,HString str2){int i;if(isEmpty(str2)){printf("This chuan is empty\n");return ERROR;}for(i=0;i<str2.chunsize;i++){str1.pBase[i]=str2.pBase[i];}str1.chunsize=str2.chunsize;return OK;}int Strlength(HString str){if(isEmpty(str))return 0;return str.chunsize;}statue Concat(HString &str1,HString str2){int i,length;length=Strlength(str1)+Strlength(str2);if(isEmpty(str1)||isEmpty(str2)){printf("this chuan is empty\n");return ERROR;}while(length>MAXSIZE){str1.pBase=(Elemtype *)realloc(str1.pBase,sizeof(Elemtype)*length);}for(i=Strlength(str1);i<length;i++){str1.pBase[i]=str2.pBase[i-Strlength(str1)];}str1.chunsize+=str2.chunsize;return OK;}int StrCompare(HString str1,HString str2){int i,j,k;str1.chunsize>str2.chunsize ? k=str1.chunsize:k=str2.chunsize;if(isEmpty(str1)||isEmpty(str2)){printf("this chuan is empty\n");exit(-1);}for(i=0;i<k;i++){if(str1.pBase[i]>str2.pBase[i]){return 1;}else if(str1.pBase[i]<str2.pBase[i]){return -1;}if(i+1==k){return 0;}}}statue SubString(HString &sub,HString s,int pos,int length){int i;if(pos<0||pos>s.chunsize){printf("This pos ERROR\n");return ERROR;}if(s.chunsize-pos<length){printf("This length ERROR\n");return ERROR;}if(isEmpty(s)){printf("This chuan is empty\n");return ERROR;}for(i=0;i<length;i++){sub.pBase[i]=s.pBase[i+pos-1];}sub.chunsize=length;return OK;}int Index(HString str1,HString str2){int i=0,j=0,k;if(isEmpty(str1)||isEmpty(str2)){printf("this chuan is empty\n");exit(-1);}while(i<str1.chunsize&&j<str2.chunsize){//printf("%c*********%c\n",str1.pBase[i],str2.pBase[j]);//printf("%d----%d\n",i,j);if(str1.pBase[i]==str2.pBase[j]){i++;j++;}else{j=0;i=i-j+1;}}//printf("%d-->>>--%d\n",i,j);if(j>=str2.chunsize){return i-str2.chunsize+1;}else if(i>str1.chunsize){return 0;}}
1 0
- c 数据结构 顺序串
- 数据结构c语言实现定长顺序串
- C数据结构-顺序栈
- 【数据结构】【C】顺序栈
- 数据结构---顺序表c实现
- <C/C++数据结构>顺序表
- C语言数据结构-顺序表
- C语言数据结构-顺序栈
- C语言数据结构-顺序队列
- [C++] 数据结构之顺序栈
- [C++] 数据结构之顺序队列
- 数据结构C语言顺序队
- C数据结构-优化顺序队列
- (C语言)串定长顺序存储实现(数据结构十二)
- 数据结构之---C语言实现串的顺序存储
- 数据结构 顺序串的建立及其函数 C语言版
- 第八周项目三C/C++数据结构顺序串算法
- 数据结构—顺序串
- N皇后问题(nQueue)、BackTracking、数据结构与算法分析
- 一个页面从输入url到页面加载显示完成,这个过程都发生了什么?
- 公正的选举Unbiased election 《算法》2.5.16, 检测稳定性 《算法》2.5.17 , 强制稳定 《算法》2.5.18, Kendall tau距离 《算法》2.5.19
- noip2016年初赛总结与反思
- XAMPP下通过pypmyadmin连接数据库出错问题及解决
- c 数据结构 顺序串
- Mysql中的锁机制
- 傅里叶理解
- 89. Gray Code
- Linux CentOS 7电源管理设置(合盖不睡眠)
- ZooKeeper程序员指南(转)
- 1016. Phone Bills (25)
- UVa 122 Trees on the level
- 使用经验