用链表实现两个字符串的连接,这里只是把字符串2直接连到字符串1上,没有新建一个链表来专门存储连接后的字符串。
源代码如下: VC6.0编译通过
#include <stdio.h>
#include <stdlib.h>
struct string{
char ch;
struct string *next;
};
struct string *string_copy(struct string *string1, struct string *string2){
struct string *temp;
if(string1 == NULL) //if the first string is empty , then return the second one
return string2;
temp = string1;
for(temp; temp->next != NULL; temp = temp->next); //find the last one in string 1
temp->next = string2;
return string1;
}
struct string *string_write(){
char ch;
struct string *str, *head, *tail;
str = head = tail = NULL;
printf("please input the chars end with enter/n");
scanf("%c",&ch);
while(ch != '/n'){
str = (struct string*)malloc(sizeof(struct string));
str->ch =ch;
if(head == NULL){
head = tail = str;
head->next = tail->next = NULL;
}
tail->next = str;
tail = str;
tail->next = NULL;
scanf("%c",&ch);
}
return head;
}
void string_print(struct string *str){
struct string *temp;
temp = str;
while(temp->next != NULL){
printf("%c ",temp->ch);
temp = temp->next;
}
printf("%c/n",temp->ch);
}
int main(){
struct string *str1, *str2, *str;
str1 = string_write();
str2 = string_write();
str = string_copy(str1, str2);
printf("now the string is like this:/n");
string_print(str);
return 0;
}