首页 > 代码库 > 【算法和数据结构】_14_小算法_Blank字符替换
【算法和数据结构】_14_小算法_Blank字符替换
1 /* 2 本程序用来将输入的制表符替换为\t, 而将退格替换为\b, 3 将反斜杠替换为\ 4 */ 5 6 #include <stdio.h> 7 #include <stdlib.h> 8 9 typedef struct node 10 { 11 char Input; 12 struct node* next; 13 }NODE; 14 15 16 int GetLine(NODE *head); 17 int Transfer(NODE *head); 18 void EchoLine(NODE *head); 19 20 int main(int argc,char* argv[],char* env[]) 21 { 22 NODE* head; 23 24 25 if(NULL==(head=(NODE*)malloc(sizeof(NODE)))) 26 { 27 puts("No enough space,then will quit"); 28 exit(0); 29 } 30 31 32 GetLine(head); 33 Transfer(head); 34 EchoLine(head); 35 36 getchar(); 37 return 0; 38 } 39 40 41 /* 42 函数功能: 43 读取字符,并用动态分配的内存存储起来 44 函数原型: 45 char* GetLine(char* head) 46 函数参数: 47 char* head:存储的首地址 48 返回值: 49 0:成功执行 50 1:没有足够的内存空间分配 51 异常: 52 传递空指针参数 53 */ 54 int GetLine(NODE* head) 55 { 56 NODE* end; 57 NODE* temp; 58 59 short int Input; 60 61 if(NULL==(head=(NODE*)malloc(sizeof(NODE)))) 62 exit(0); 63 64 end=head; 65 while((Input=getchar())!= EOF) 66 { 67 end->Input =Input; 68 if(NULL==(temp=(NODE *)malloc(sizeof(NODE)))) 69 exit(0); 70 temp->next =NULL; 71 end->next =temp; 72 end=temp; 73 } 74 75 return 0; 76 } 77 78 /* 79 函数功能: 80 ‘\t‘ ——> ‘\\’##‘t’ 81 ‘\b‘ ——> ‘\\‘##‘b‘ 82 ‘\\‘ ——> ‘\\‘##‘\\‘ 83 函数原型: 84 int Transfer(NODE *) 85 函数参数: 86 NODE* head:待处理文本流首地址 87 函数返回值: 88 0: 成功执行 89 1: 没有足够的空间存储分配 90 异常: 91 传递空指针参数 92 */ 93 int Transfer(NODE* head) 94 { 95 NODE* temp; 96 NODE* NewNode; 97 98 NewNode=head; 99 while(NewNode->next != NULL)100 { 101 if(NewNode->Input == ‘\t‘)102 {103 if(NULL==(temp=(NODE*)malloc(sizeof(NODE))))104 return 1;105 //1、先将temp的Input成员设置成‘t’106 temp->Input =‘t‘;107 //2、然后将temp->next指向NewNode的下一个节点108 temp->next =NewNode->next ;109 //3、然后将NewNode->next指向temp节点110 NewNode->next =temp;111 //4、设置NewNode->input为反斜杠 ‘\\’112 NewNode->Input =‘\\‘;113 }114 else if(NewNode->Input == ‘\b‘)115 {116 if(NULL==(temp=(NODE*)malloc(sizeof(NODE))))117 return 1;118 //1、先将temp的Input成员设置成‘t’119 temp->Input =‘b‘;120 //2、然后将temp->next指向NewNode的下一个节点121 temp->next =NewNode->next ;122 //3、然后将NewNode->next指向temp节点123 NewNode->next =temp;124 //4、设置NewNode->input为反斜杠 ‘\\’125 NewNode->Input =‘\\‘;126 }127 else if(NewNode->Input == ‘\\‘)128 {129 if(NULL==(temp=(NODE*)malloc(sizeof(NODE))))130 return 1;131 //1、先将temp的Input成员设置成‘t’132 temp->Input =‘\\‘;133 //2、然后将temp->next指向NewNode的下一个节点134 temp->next =NewNode->next ;135 //3、然后将NewNode->next指向temp节点136 NewNode->next =temp;137 //4、设置NewNode->input为反斜杠 ‘\\’138 NewNode->Input =‘\\‘;139 }140 }141 142 return 0;143 }144 145 146 /*147 函数功能:148 输出字符流149 函数原型:150 int EchoLine(NODE *head)151 函数参数:152 NODE* head:存储字符的首地址153 返回值:154 无返回值155 异常:156 传递空指针参数157 */158 159 void EchoLine(NODE* head)160 {161 NODE* temp;162 temp=head;163 while(NULL != temp->next )164 {165 putchar(temp->Input);166 temp=temp->next ;167 168 //free(temp);169 }170 }
【算法和数据结构】_14_小算法_Blank字符替换
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。