题目要求
将以链表为存储结构的字符串中的第一个“ab”,替换为“xyz”。
解题思路
查找第一个出现的ab子串,将’a’对应节点的data替换为’x’,‘b’对应的节点data替换为’z’,创建新节点,data设置为’y’,插入到上述两个节点之间。
代码如下:
#include<stdio.h>
#include<stdlib.h>
struct node{
char data;
node *next;
};
int i;
node *L;
node *creat(char a[]){ //建立链表
node *head=new node;
head->next=NULL;
node *p=head;
for(i=0;a[i]!='\0';i++){
node *t=new node;
t->data=a[i];
t->next=p->next;
p->next=t;
p=t;
}
return head;
}
void show(node *L){ //输出链表
node *p=L->next;
while(p!=NULL){
printf("%c",p->data);
if(p->next==NULL) printf("\n");
p=p->next;
}
}
void solve(node *&head){ //替换'ab'为'xyz'
node *p=head->next;
while(p->next!=NULL){
if(p->data=='a' &&p->next->data=='b'){
p->data='x';
p->next->data='z';
node *q=new node;
q->data='y';
q->next=p->next;
p->next=q;
return;
}
else p=p->next;
}
}
int main(){
char a[100];
gets(a);
L=creat(a);
show(L);
solve(L);
show(L);
return 0;
}