zoukankan      html  css  js  c++  java
  • 顺序串的初始化,建立,插入,查找,删除。

    //////////////////////////////////////////////
    //顺序串的初始化,建立,插入,查找,删除。  //
    //Author:Wang Yong				  		    //	
    //Date:	2010.8.21				  		    //
    //////////////////////////////////////////////
    
    #include <stdio.h>
    #include <stdlib.h>
    
    #define MAX 1024
    
    //////////////////////////////////////////////
    
    //定义顺序串的类型  
    
    typedef struct
    {
    	char ch[MAX];			//存放字符串 
    	int len;				//存放串的长度 
    } SeqString;
    
    //////////////////////////////////////////////
    
    //创建顺序串
    
    void StrAssign(SeqString &str,char cstr[])
    {
    	int i;
    	for(i = 0 ;cstr[i] != '\0'; i++)
    		str.ch[i] = cstr[i];
    	str.len = i;
    }
    
    //////////////////////////////////////////////
    
    //顺序串的复制
    
    void StrCopy(SeqString &s,SeqString t)
    {
    	int i;
    	for(i = 0;i < t.len; i++)
    		s.ch[i] = t.ch[i];
    	s.len = t.len;
    } 
    
    //////////////////////////////////////////////
    
    //求串长的算法
    
    int StrLength(SeqString s)
    {
    	return s.len;
    }
    
    ///////////////////////////////////////////////
    
    //串连接的算法
    
    SeqString StrConcat(SeqString s,SeqString t)
    {
    	int i;
    	SeqString str;
    	for(i = 0 ;i < s.len ; i++)
    		str.ch[i] = s.ch[i];
    	for(i = 0 ; i < t.len;i++)
    		str.ch[i+s.len] = t.ch[i];
    	str.len =s.len + t.len;
    	
    	return  str; 
    } 
    ///////////////////////////////////////////////
    
    //求子串的算法,返回从第i个字符开始,连续的j个字符组成的子串
    
    SeqString SubString(SeqString s,int i,int j)
    {
    	SeqString str;
    	int k;
    	if(i < 1 || i > s.len || i+j-1 > s.len)
    		printf("参数错误!\n"); 
    	for(k = i-1;k < i+j;k++ )
    		str.ch[k-i+1] = s.ch[k];
    	str.len = j;
    	return str;
    } 
    
    ///////////////////////////////////////////////
    
    //串插入的算法
    
    SeqString InsertString(SeqString &s,int i, SeqString t)
    {
    	s.len =s.len + t.len;
    	int j;
    	for(j = s.len - 1; j >- i-1; j--)
    		s.ch[j+t.len] = s.ch[j];
    	i = i - 1;	
    	for(j = 0 ; j < t.len; j++)
    		s.ch[i++] = t.ch[j];
    	return s; 
    }
    
    ///////////////////////////////////////////////
    
    //删除字串的算法,从s中删除第i个字符开始的长度为j的子串
    
    SeqString DeleteString(SeqString &s,int i, int j)
    {
    	int k;
    	if(i < 0 || i > s.len || i+j-1 > s.len)
    		printf("参数不正确!\n");
    	for(k = i-1 ;k <s.len-j;k++)
    		s.ch[k] = s.ch[k+j];
    	s.len = s.len - j;
    	return s; 
    } 
    
    /////////////////////////////////////////////////// 
    
    // 串的输出
    
    void Output(SeqString s)
    {
    	int i;
    	for(i = 0 ; i < s.len; i++)
    		printf("%c",s.ch[i]);
    	printf("\n");
    } 
    int main()
    {
    	char c[100];
    	SeqString str;
    	printf("请输入要创建的字符串:");
    	scanf("%s",c);
    	StrAssign(str,c);
    	Output(str);
    	
    	int i = StrLength(str);
    	printf("字符串的长度为:%d\n",i);
    	
    	printf("要复制的字符串:");
    	char tempc[100];
    	SeqString tstr;
    	scanf("%s",tempc);
    	StrAssign(tstr,tempc);
    	StrCopy(str,tstr);
    	Output(str);
     	
     	printf("将两个字符串链接起来:");
     	StrAssign(str,c);
     	StrAssign(tstr,tempc);
     	
     	SeqString newstr = StrConcat(str,tstr);
    	Output(newstr);
    	
    	SeqString sstr; 
    	int j;
    	printf("请输入所要求的子串位置i和长度j:");
    	scanf("%d %d",&i,&j);
     	sstr = SubString(newstr,i,j);
    	Output(sstr);
    	
    	printf("请输入要插入的字符串:");
    	scanf("%s",c);
    	StrAssign(str,c);
    	printf("请输入要插入的位置:");
    	scanf("%d",&i);
    	InsertString(newstr,i,str); 
    	Output(newstr);
    	
    	printf("请输入要删除子串的位置和长度:");
    	scanf("%d %d",&i,&j);
    	DeleteString(newstr,i,j);
    	Output(newstr); 
    	return 0;
    } 
    
  • 相关阅读:
    cvLoadImage cvCreateImage函数使用方法
    CString 的FindOneOf
    FTP与SFTP的区别
    如何在Linux环境下编译lib 库
    CString 和 string之间的转换
    Cstring getlength
    CString类常用方法----Left(),Mid(),Right()……
    LPCTSTR
    明白fopen的参数r+,w+以及a+
    libsvm -c http://www.ilovematlab.cn/thread-89155-1-1.html
  • 原文地址:https://www.cnblogs.com/newwy/p/1847468.html
Copyright © 2011-2022 走看看