删除从第i个位置开始,长度为len的子串

/*
字符串采用带头结点的链表存储,设计算法函数void delstring(linkstring s, int i,int len)
在字符串s中删除从第i个位置开始,长度为len的子串。
*/
/**********************************/
/*文件名称:lab4_05.c */
/**********************************/
#include "linkstring.h"
/*请将本函数补充完整,并进行测试*/
void delstring(linkstring s, int i, int len)
{
linkstring p,temp;
int j=1;
p=s;
for(; j<i; j++)
{
p=p->next;
}
temp=p;
int k=i;
for(; i<k+len; i++)
{
temp=temp->next;
}
p->next=temp->next;
return s;

}
int main()
{
linkstring str;
str=creat(); /*建字符串链表*/
print(str);
delstring(str,2,3); /*测试,从第2个位置删除长度为3的子串,请自行构造不同的测试用例 */
print(str); /*输出*/
delList(str);
return 0;
}

时间: 2024-10-13 15:37:14

删除从第i个位置开始,长度为len的子串的相关文章

字符串s中从第i个位置起取长度为len的子串,函数返回子串链表

/*已知字符串采用带结点的链式存储结构(详见linksrting.h文件),请编写函数linkstring substring(linkstring s,int i,int len),在字符串s中从第i个位置起取长度为len的子串,函数返回子串链表.*/ #include "linkstring.h"/*请将本函数补充完整,并进行测试*/linkstring substring(linkstring s, int i, int len){linkstring temp;int j;fo

LCS模板,求长度,并记录子串

1 //LCS模板,求长度,并记录子串  2 //亦可使用注释掉的那些代码,但所用空间会变大 3 #include<iostream> 4 #include<cstring> 5 #include<cmath> 6 #include<cstdlib> 7 #include<cstdio> 8 using namespace std; 9 #define N 5005 10 11 int len[N][N]; 12 char str1[N],str

HDU4850 构造一个长度为n的串,要求任意长度为4的子串不相同

n<=50W.(使用26个字母) 构造方法:26个,最多构造出26^4种不同的串,长度最长是26^4+3,大于是输出"impossble",用四维数组判重.每次向前构造一位(先从上一位字符后一个开始),这样,可以构造出26^4-25种,打印出来发现(bbbb~zzzz),构造不出来,于是,学习了他人方法,把这些放在最前面,再重复上述方法构造即可(以后都可以用这种向前推一法构造). PS:从中额外学得:若用string 的s=s+char,拼接,速度很慢,用char s[],然后s

Standby Redo Log 的设定原则、创建、删除、查看、归档位置

设定: 1.每个standby redo log file 至少要和primary database的redo log 一样大,为了方便管理,Oracle 建议主备库的redo log 设置成一样的大小.SQL> SELECT GROUP#, BYTES/1024/1024 M FROM V$LOG; 2.Standby redo log group 至少要比primary database的redo log group 多一组. 可以在primary 库查询v$log视图,来确定主库有多少组r

根据字符串中的具体信息来找到其具体位置和长度

#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { /* NSString *[email protected]"apple banana pear"; NSArray *array=[str componentsSeparatedByString:@" "]; NSLog(@"%@",array)

数据结构与算法系列研究三——字符串

字符串的研究和KMP算法分析和实现 一.串的定义 串是计算机非数值处理的基本对象.串是一种特殊的线性表,它的每个结点仅由一个字符组成,并且单个元素是无意义的.    1.串(string):是由0个或多个字符组成的有限序列,记作:          S="a1a2...an"  (n>=0)          其中:S是串名,两个双引号括起来的字符序列为串的值.双引号不属于串.                   ai(1<=i<=n)为字母.数字或其它符号.    

数据结构之 --线性表之--串

简单的实现串的操作,其实这与那些字符串库函数所用的操作思想是相同的,但是这是一种数据的存储方式,与操作,重点强调了数据的存储. 下面是串的非堆存储操作,说明白就是穿类似数组的存储,在分配内存时在栈中分配: /********************************************************************** * * Copyright (c)2015,WK Studios * * Filename: str.h * * Compiler: GCC vc 6

堆分配存储的串的表示和实现

串的堆分配存储结构 struct HString { char * ch;//若是非空串,则按串长分配存储区:否则ch为NULL int length;//串长度 }; 堆分配存储的串的12个基本操作 #define DestroyString ClearString//DestroyString()和ClearString()作用相同 void InitString(HString &S){ S.length = 0; S.ch = NULL; } void ClearString(HStri

_DataStructure_C_Impl:堆串

#include<stdio.h> #include<stdlib.h> typedef struct{ char *str; int length; }HeapString; //串的赋值操作 void StrAssign(HeapString *S,char cstr[]){ int i=0,len; if(S->str) free(S->str); for(i=0;cstr[i]!='\0';i++); //求cstr字符串的长度 len=i; if(!i){ S