Heim  >  Artikel  >  Backend-Entwicklung  >  So entfernen Sie einen Teilstring aus einem String

So entfernen Sie einen Teilstring aus einem String

零到壹度
零到壹度Original
2018-03-29 15:41:182920Durchsuche

Dieser Artikel enthält hauptsächlich einen Artikel zum Löschen von Teilzeichenfolgen in einer Zeichenfolge. Er hat einen guten Referenzwert und ich hoffe, dass er für alle hilfreich ist. Folgen wir dem Herausgeber und werfen wir einen Blick darauf.

Kommen wir ohne weitere Umschweife direkt zum Code.

Algorithmusidee: Suchen Sie den i-ten Knoten, der gelöscht werden soll, und löschen Sie ihn nacheinander.

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

}

Verwandte Empfehlungen:

Löschen Sie die Teilzeichenfolge in der angegebenen Zeichenfolge

in der Zeichenfolge Löschen die Teilzeichenfolge in

Löschen Sie die Teilzeichenfolge in der Zeichenfolge

Das obige ist der detaillierte Inhalt vonSo entfernen Sie einen Teilstring aus einem String. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn