#include<stdio.h>
#include<stdlib.h>
#define NodeSize 100
//链串结构体
typedef struct node
{
char str[NodeSize];
struct node *next;
}LinkString;
LinkString *InitString(LinkString *S)
{
S=(LinkString *)malloc(sizeof(LinkString));
S->next=NULL;
return S;
}
//创建链串
void CreatString(LinkString *S)
{
int i=0;
LinkString *p=(LinkString *)malloc(sizeof(LinkString));
p=S;
printf("Input string 3 times:\n");
while(i<10)
{
LinkString *q=(LinkString *)malloc(sizeof(LinkString));
gets(q->str);
q->next=NULL;
p->next=q;
p=q;
i++;
}
}
//遍历链串
void TraverseString(LinkString *S)
{
LinkString *p=S->next;
while(p)
{
printf("%s",p->str);
p=p->next;
}
}
//插入链串
LinkString *StrInsert(LinkString *S,LinkString *s,int pos)
{
int i=1;
LinkString *p,*q;
p=S,q=s;
while(i<pos&&p)
{
p=p->next;
i++;
}
if(!p)
{
printf("Position is error!\n");
return 0;
}
while(q->next)
{
q=q->next;
}
q->next=p->next;
p->next=s->next;
return S;
}
//删除子串
LinkString *DeletString(LinkString *S)
{
int begin,end,len;
LinkString *p=S,*q;
printf("\nInput begin and end:");
scanf("%d %d",&begin,&end);
len=end-begin+2;
begin--;
while(begin--)
p=p->next;
q=p;
while(len--)
q=q->next;
p->next=q;
TraverseString(S);
return S;
}
int main()
{
LinkString *S,*T;
S=InitString(S);
T=InitString(T);
CreatString(S);
TraverseString(S);
CreatString(T);
S=StrInsert(S,T,2);
TraverseString(S);
DeletString(S);
}
串(链串)
最新推荐文章于 2022-10-23 22:54:37 发布