链串的基本操作
来源:互联网 发布:考普通话的软件 编辑:程序博客网 时间:2024/06/16 10:45
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Node
{
char data;
struct Node *next;
} LiString;
void StrAssign(LiString *&s,char cstr[])
{
int i;
LiString *r,*p;
s=(LiString *)malloc(sizeof(LiString));
r=s;
for(i=0; i<(int)strlen(cstr); i++)
{
p=(LiString*)malloc(sizeof(LiString));
p->data=cstr[i];
r->next=p;
r=p;
}
r->next=NULL;
}
void DispStr(LiString *s)
{
LiString *p=s->next;
while(p!=NULL)
{
printf("%c",p->data);
p=p->next;
}
printf("\n");
}
void StrLength(LiString *s)
{
int i=0;
LiString *p=s->next;
while(p!=NULL)
{
i++;
p=p->next;
}
printf("%d\n",i);
}
LiString *InsStr(LiString *s,int i,LiString *t)
{
int k;
LiString *str,*p=s->next,*p1=t->next,*q,*r;
str=(LiString*)malloc(sizeof(LiString));
str->next=NULL;
r=str;
for(k=1; k<i; k++)
{
q=(LiString*)malloc(sizeof(LiString));
q->data=p->data;
r->next=q;
r=q;
p=p->next;
}
while(p1!=NULL)
{
q=(LiString*)malloc(sizeof(LiString));
q->data=p1->data;
r->next=q;
r=q;
p1=p1->next;
}
while(p!=NULL)
{
q=(LiString*)malloc(sizeof(LiString));
q->data=p->data;
r->next=q;
r=q;
p=p->next;
}
r->next=NULL;
return str;
}
LiString *DelStr(LiString *s,int i,int j)
{
int k;
LiString *str,*p=s->next,*q,*r;
str=(LiString*)malloc(sizeof(LiString));
str->next=NULL;
r=str;
for(k=0; k<i-1; k++)
{
q=(LiString*)malloc(sizeof(LiString));
q->data=p->data;
r->next=q;
r=q;
p=p->next;
}
for(k=0; k<j; k++)p=p->next;
while(p!=NULL)
{
q=(LiString*)malloc(sizeof(LiString));
q->data=p->data;
r->next=q;
r=q;
p=p->next;
}
r->next=NULL;
return str;
}
LiString *RepStr(LiString *s,int i,int j,LiString *t)
{
int k;
LiString *str,*p=s->next,*p1=t->next,*q,*r;
str=(LiString*)malloc(sizeof(LiString));
str->next=NULL;
r=str;
for(k=0; k<i-1; k++)
{
q=(LiString*)malloc(sizeof(LiString));
q->data=p->data;
q->next=NULL;
r->next=q;
r=q;
p=p->next;
}
for(k=0; k<j; k++)p=p->next;
while(p1!=NULL)
{
q=(LiString*)malloc(sizeof(LiString));
q->data=p1->data;
q->next=NULL;
r->next=q;
r=q;
p1=p1->next;
}
while(p!=NULL)
{
q=(LiString*)malloc(sizeof(LiString));
q->data=p->data;
q->next=NULL;
r->next=q;
r=q;
p=p->next;
}
r->next=NULL;
return str;
}
LiString *TiStr(LiString *s,int i,int j)
{
LiString *str;
int k=0,m=0;
char c[50]= {0};
while(s!=NULL)
{
k++;
if(k<=i+j&&k>i)c[m++]=s->data;
s=s->next;
}
StrAssign(str,c);
return str;
}
LiString *Concat(LiString *s,LiString *t)
{
LiString *str,*p=s->next,*q,*r;
str=(LiString*)malloc(sizeof(LiString));
r=str;
while(p!=NULL)
{
q=(LiString*)malloc(sizeof(LiString));
q->data=p->data;
r->next=q;
r=q;
p=p->next;
}
p=t->next;
while(p!=NULL)
{
q=(LiString*)malloc(sizeof(LiString));
q->data=p->data;
r->next=q;
r=q;
p=p->next;
}
r->next=NULL;
return str;
}
int main()
{
LiString *s,*s1,*s2,*s3;
char c[]="abcdefghefghijklmn",d[]="xyz";
StrAssign(s,c); //建立串
StrAssign(s1,d);
DispStr(s); //输出串
StrLength(s);
s2=InsStr(s,9,s1); //将s1插入到s的第九个位置
DispStr(s2);
s2=DelStr(s,2,5); //删除s第二个字符开始的五个字符
DispStr(s2);
s2=RepStr(s,2,5,s1); //将串s第二个字符开始的五个字符替换成串s1
DispStr(s2);
s2=TiStr(s,2,10); //提取串s的第二个字符开始的10个字符
DispStr(s2);
s3=Concat(s1,s2); //将串s1和串s2连接起来
DispStr(s3);
return 0;
}
#include <stdlib.h>
#include <string.h>
typedef struct Node
{
char data;
struct Node *next;
} LiString;
void StrAssign(LiString *&s,char cstr[])
{
int i;
LiString *r,*p;
s=(LiString *)malloc(sizeof(LiString));
r=s;
for(i=0; i<(int)strlen(cstr); i++)
{
p=(LiString*)malloc(sizeof(LiString));
p->data=cstr[i];
r->next=p;
r=p;
}
r->next=NULL;
}
void DispStr(LiString *s)
{
LiString *p=s->next;
while(p!=NULL)
{
printf("%c",p->data);
p=p->next;
}
printf("\n");
}
void StrLength(LiString *s)
{
int i=0;
LiString *p=s->next;
while(p!=NULL)
{
i++;
p=p->next;
}
printf("%d\n",i);
}
LiString *InsStr(LiString *s,int i,LiString *t)
{
int k;
LiString *str,*p=s->next,*p1=t->next,*q,*r;
str=(LiString*)malloc(sizeof(LiString));
str->next=NULL;
r=str;
for(k=1; k<i; k++)
{
q=(LiString*)malloc(sizeof(LiString));
q->data=p->data;
r->next=q;
r=q;
p=p->next;
}
while(p1!=NULL)
{
q=(LiString*)malloc(sizeof(LiString));
q->data=p1->data;
r->next=q;
r=q;
p1=p1->next;
}
while(p!=NULL)
{
q=(LiString*)malloc(sizeof(LiString));
q->data=p->data;
r->next=q;
r=q;
p=p->next;
}
r->next=NULL;
return str;
}
LiString *DelStr(LiString *s,int i,int j)
{
int k;
LiString *str,*p=s->next,*q,*r;
str=(LiString*)malloc(sizeof(LiString));
str->next=NULL;
r=str;
for(k=0; k<i-1; k++)
{
q=(LiString*)malloc(sizeof(LiString));
q->data=p->data;
r->next=q;
r=q;
p=p->next;
}
for(k=0; k<j; k++)p=p->next;
while(p!=NULL)
{
q=(LiString*)malloc(sizeof(LiString));
q->data=p->data;
r->next=q;
r=q;
p=p->next;
}
r->next=NULL;
return str;
}
LiString *RepStr(LiString *s,int i,int j,LiString *t)
{
int k;
LiString *str,*p=s->next,*p1=t->next,*q,*r;
str=(LiString*)malloc(sizeof(LiString));
str->next=NULL;
r=str;
for(k=0; k<i-1; k++)
{
q=(LiString*)malloc(sizeof(LiString));
q->data=p->data;
q->next=NULL;
r->next=q;
r=q;
p=p->next;
}
for(k=0; k<j; k++)p=p->next;
while(p1!=NULL)
{
q=(LiString*)malloc(sizeof(LiString));
q->data=p1->data;
q->next=NULL;
r->next=q;
r=q;
p1=p1->next;
}
while(p!=NULL)
{
q=(LiString*)malloc(sizeof(LiString));
q->data=p->data;
q->next=NULL;
r->next=q;
r=q;
p=p->next;
}
r->next=NULL;
return str;
}
LiString *TiStr(LiString *s,int i,int j)
{
LiString *str;
int k=0,m=0;
char c[50]= {0};
while(s!=NULL)
{
k++;
if(k<=i+j&&k>i)c[m++]=s->data;
s=s->next;
}
StrAssign(str,c);
return str;
}
LiString *Concat(LiString *s,LiString *t)
{
LiString *str,*p=s->next,*q,*r;
str=(LiString*)malloc(sizeof(LiString));
r=str;
while(p!=NULL)
{
q=(LiString*)malloc(sizeof(LiString));
q->data=p->data;
r->next=q;
r=q;
p=p->next;
}
p=t->next;
while(p!=NULL)
{
q=(LiString*)malloc(sizeof(LiString));
q->data=p->data;
r->next=q;
r=q;
p=p->next;
}
r->next=NULL;
return str;
}
int main()
{
LiString *s,*s1,*s2,*s3;
char c[]="abcdefghefghijklmn",d[]="xyz";
StrAssign(s,c); //建立串
StrAssign(s1,d);
DispStr(s); //输出串
StrLength(s);
s2=InsStr(s,9,s1); //将s1插入到s的第九个位置
DispStr(s2);
s2=DelStr(s,2,5); //删除s第二个字符开始的五个字符
DispStr(s2);
s2=RepStr(s,2,5,s1); //将串s第二个字符开始的五个字符替换成串s1
DispStr(s2);
s2=TiStr(s,2,10); //提取串s的第二个字符开始的10个字符
DispStr(s2);
s3=Concat(s1,s2); //将串s1和串s2连接起来
DispStr(s3);
return 0;
}
0 0
- 链串的基本操作
- 串的基本操作!
- 串的基本操作
- 串的基本操作
- 串的基本操作
- *串的基本操作*
- 串的基本操作
- 串链基本操作的实现
- 测试链串的基本操作
- 定长串的基本操作
- 【数据结构】 串的基本操作
- 【数据结构】串的基本操作
- 【数据结构】串的基本操作
- 顺序串的基本操作
- 串基本操作的实现
- 链表的基本操作
- 链队列的基本操作
- 链表的基本操作
- XML 入门学习笔记(一)
- 在linux下安装禅道
- 110.Balanced Binary Tree从8ms到2ms到1ms
- 第八周上机实践项目4(2):游戏中的角色类增强版
- Android Studio 使用之一(Eclipse 快捷键!快捷键大法好)
- 链串的基本操作
- mysql的下载到安装使用
- <html>a
- js实现99乘法表
- 指向学生类的指针
- Web测试要点(功能、性能、可用性、兼容、安全)
- 第九周-深复制体验
- Android蓝牙4.0API接口之BluetoothAdapter.LeScanCallback
- swust OJ 1319: Robot in Maze