“串”的定长顺序存储表示的实现
来源:互联网 发布:js延迟调用函数函数 编辑:程序博客网 时间:2024/06/05 17:25
串——数据结构的实现——定长存储顺序。
//头文件sstring.h#pragma once#include<iostream>using namespace std;#define STRING_SIZE 20typedef char Sstring[STRING_SIZE+1];int length(Sstring S){ return strlen(S);}void StrAssign(Sstring T, char *str){ int i=0; while(*str != '\0') { T[i++] = *str++; } T[i] = '\0';}bool StringConcat(Sstring T,Sstring s1,Sstring s2){ int a = length(T); int b = length(s1); int c = length(s2); if(a>b+c) { for(int i=0;i<b;i++) { T[i] = s1[i];} for(int j= b; j < b+c;j++) { T[j] = s2[j];} T[j] = '\0';return true; } else if(a>b && a<b+c) { for(int i=0;i<b;i++) { T[i] = s1[i];} for(int j=b;j<=STRING_SIZE;j++) { T[j] = s2[j];} T[j] = '\0';return true; } else if(a<b) { for(int i=0;i<=STRING_SIZE;i++) {T[i] = s1[i];} T[i] = '\0'; } return true;}void StrCopy(Sstring T, Sstring S){ int i=0; while(S[i] != '\0') { T[i] = S[i];i++; } T[i] = '\0';}bool StrEmpty(Sstring S){ if(S[0] == '\0') return false; return true;}int StrCompare(Sstring T, Sstring S){ int i=0; while(T[i]-S[i] == 0) { i++; } if(T[i]-S[i]>0) return 1; if(T[i]-S[i]<0) return -1; else return 0;}void ClearString(Sstring T){ int i=0; T[i]='\0';}char * SubString(Sstring T,int pos,int len,Sstring S){if(length(T)<pos+len)return false;for(int i= 0;i<len;i++){ S[i] = T[i+pos];}S[i] = '\0';return S;}int Index(Sstring S,Sstring T,int pos){int s_len=length(S);int t_len=length(T); for(int i=pos;i<=s_len - t_len;i++) { for(int j=0;j <= t_len;++j) { if(S[j+i]==T[j]) { if(j == t_len-1) {return i;} else {continue;} } else break; } } return 0;}bool Replace(Sstring S,Sstring T,Sstring V){ int sl=length(S); int tl=length(T); for(int i=0;i<sl-tl;i++) { for(int j=0;j <= tl;++j) { if(S[j+i]==T[j]) { if(j == tl-1) { for(int m =0;m<tl;m++) { S[m+i] = V[m]; } } else {continue;} } else break; } } return 0;}bool StrInsert(Sstring S,int pos,Sstring T){ //1<=pos<=length(S)+1int sl=length(S);int tl=length(T);if(pos>sl+1)return false;for(int i=0;i<=sl-pos;i++){ S[sl+tl-i]=S[sl-i];} for(int j=pos;j<tl+pos;j++){S[j] = T[j-pos];}return true;}bool StrDelete(Sstring S,int pos,int len){ if(pos>length(S)+1) return false; for(int i=pos;i<length(S)-pos;i++) { S[i]=S[i+len]; } return true; }void DestroyString(Sstring S){ S[0]='\0';}
主函数:
#include"sstring.h"void main(){ char *str1="asdcsdhasda"; char *str2="sd"; char *str3="zr"; Sstring S; Sstring T; Sstring V; StrAssign(S,str1); StrAssign(T,str2); StrAssign(V,str3); Replace(S,T,V); //StrInsert(S,3,T); //StrDelete(S,1,2); /* int ret=Index(S,T,3); cout<<ret<<endl; */ //int ret=StrCompare(T,S); //StrCopy(S,T); //cout<<ret<<endl; //cout<<SubString(T,0,5,S)<<endl; //cout<<length(S)<<endl; cout<<S<<endl;}
注释部分为各函数的,图片没有一一附上。
0 0
- “串”的定长顺序存储表示的实现
- 定长顺序存储的串的表示和实现
- 串的定长顺序存储表示
- 串的定长顺序存储表示
- 串的定长顺序存储
- 串的表示和实现(串的堆分配存储、串的定长顺序存储结构)
- 串的定长数据存储表示
- 线性表的顺序表示和实现(定长顺序表)
- 串的定长顺序存储C语言实现
- 数据结构--串--定长顺序存储表示
- 串的定长顺序存储结构
- 串的定长顺序存储结构
- 数据结构 串的定长顺序存储
- 数据结构(C语言)读书笔记10:串的定长顺序存储表示
- 学习笔记------数据结构(C语言版)串的定长顺序存储表示
- 字符串的定长顺序存储表示与块链存储表示
- 数据结构---串的定长顺序实现
- 串的定长存储
- 最全的listview
- Centos epel源
- C/C++中vector的操作(排序、删除)
- Xcode快捷键
- 安装concrete时提示“...database does not support InnoDB database tables..."如何解决
- “串”的定长顺序存储表示的实现
- Linux curses库使用
- android--listview加载更多后恢复到加载之前的位置(终极方案)
- android驱动中的休眠
- Meteor 中的定时器
- 修改UITabBarItem字体颜色
- java基础整理の数组的排序方法
- js 简单的提示并跳转
- SQuirreL SQL Client使用入门2---插件使用