Home  >  Article  >  Backend Development  >  How to remove substring from string

How to remove substring from string

零到壹度
零到壹度Original
2018-03-29 15:41:182925browse

This article mainly shares with you an article on how to delete substrings in a string. It has a good reference value and I hope it will be helpful to everyone. Let’s follow the editor to have a look.

Without further ado, let’s get straight to the code.

Algorithm idea: Find the i-th node to be deleted and delete it one by one.

#include <stdio.h>
#include <stdlib.h>

typedef char datatype;
typedef struct node{
    datatype x;
    struct node *next;
}seqlist;

// 创建带头结点的单链表
seqlist *creat()
{
    seqlist *p,*s,*head=NULL;
    datatype ch;
    head=(seqlist *)malloc(sizeof(seqlist));
    p=head;
    head->next=NULL;
    while((ch=getchar())!=&#39;\n&#39;)
    {
        s=(seqlist *)malloc(sizeof(seqlist));
        s->x=ch;
        p->next=s;
        p=s;
    }
    p->next=NULL;
    return head;
}

//  单链表的遍历1
seqlist * display1(seqlist *head)
{
    seqlist *p;
    p=head->next;
    while(p)
    {
        printf("%c",p->x);
        p=p->next;
    }
    printf("\n");
    return head;
}

// 单链表的遍历2          创建这个是因为返回值为null时用1会造成错误。
seqlist * display2(seqlist *head)
{
    seqlist *p;
    p=head;
    while(p)
    {
        printf("%c",p->x);
        p=p->next;
    }
    printf("\n");
    return head;
}

//  字符串子串的删除
seqlist * Del(seqlist * head,int i,int len)
{
    seqlist *p,*q,*r;    // p,q,r 分别为移动,替死符,记录前一个位子。
    int k=1;
    p=r=head;
    while(p && k<=i)
    {
        r=p;
        p=p->next;
        k++;
    }
    if(!p)
    {
        printf("Error1\t 位置超出范围\n");
        return (NULL);
    }
    else
    {
        k=1;
        while(p && k<=len)    //这里需要特别注意出口条件
        {
            if(p==r)
            {
                p=p->next;
                q=p;
                p=q->next;
                r->next=q->next;
                k++;
                free(q);
            }
            else
            {
                q=p;
                p=q->next;
                r->next=q->next;
                k++;
                free(q);
            }
        }
        if(k<len)
        {
            printf("Error 2\t长度超出范围\n");
            return (NULL);
        }
        else
            return head;
    }

}

int main()
{
    int i,len;
    seqlist *head;
    head=creat();
    display1(head);
    scanf("%d",&i);
    scanf("%d",&len);
    head=Del(head,i,len);
    display2(head);
    return 0;

}

Related recommendations:

Delete the substring in the specified string

Delete in the string Substring

Delete substring in string

The above is the detailed content of How to remove substring from string. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn