标签:链表
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
每个输入文件仅包含一组测试样例。
对于每组测试案例,输入一行代表要处理的字符串。
对应每个测试案例,出经过处理后的字符串。
We Are Happy
We%20Are%20Happy
// // main.c // 替换空格 // // Created by 李亚坤 on 14-9-28. // Copyright (c) 2014年 李亚坤. All rights reserved. // // // 时间复杂度O(n),使用了链表的方法,可能有些啰嗦,思路是清晰的 #include <stdio.h> typedef struct listelmt_ { void *data; struct listelmt_ *next; }listelmt; typedef struct list_ { int size; listelmt *head; listelmt *tail; }list; int initlist(list *list) { list->head = NULL; list->tail = NULL; list->size = 0; return 0; } int insert_next(list *list, listelmt *element, void *data) { listelmt *new_element; new_element = (listelmt *)malloc(sizeof(listelmt)); if (new_element == NULL) { return -1; } new_element->data = data; new_element->next = NULL; if (element == NULL) { if (list->size == 0) { list->head = new_element; list->tail = new_element; } new_element->next = list->head; list->head = new_element; } else{ if (element->next == NULL) { list->tail = new_element; } new_element->next = element->next; element->next = new_element; } list->size++; return 0; } int main(int argc, const char * argv[]) { char a[]={}; char temp1, temp2; temp1 = '0'; temp2 = '2'; gets(a); // 读取字符串 int i, size = 0; list *l; listelmt *element; l = (list *)malloc(sizeof(list)); if (l == NULL) { return -1; } initlist(l); for (i = 0; a[i] != '\0'; i++) { // 获取字符串长度 size++; } for (i = size; i >= 0 ; i--) { // 将字符串输入到链表内 insert_next(l, NULL, &a[i]); } for (element = l->head; element != l->tail; element = element->next) { if (*(char*)(element->data) == ' ') { // 在链表内完成替换 *(char*)(element->data) = '%'; insert_next(l, element, &temp1); insert_next(l, element, &temp2); } } for (element = l->head; element != l->tail; element = element->next) { printf("%c", *(char *)(element->data)); } return 0; }
标签:链表
原文地址:http://blog.csdn.net/liyakun1990/article/details/39649607