串(链串)

#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);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值