【算法和数据结构】_14_小算法_Blank字符替换
/*
本程序用来将输入的制表符替换为\t, 而将退格替换为\b,
将反斜杠替换为\\
*/ #include <stdio.h>
#include <stdlib.h> typedef struct node
{
char Input;
struct node* next;
}NODE; int GetLine(NODE *head);
int Transfer(NODE *head);
void EchoLine(NODE *head); int main(int argc,char* argv[],char* env[])
{
NODE* head; if(NULL==(head=(NODE*)malloc(sizeof(NODE))))
{
puts("No enough space,then will quit");
exit();
} GetLine(head);
Transfer(head);
EchoLine(head); getchar();
return ;
} /*
函数功能:
读取字符,并用动态分配的内存存储起来
函数原型:
char* GetLine(char* head)
函数参数:
char* head:存储的首地址
返回值:
0:成功执行
1:没有足够的内存空间分配
异常:
传递空指针参数
*/
int GetLine(NODE* head)
{
NODE* end;
NODE* temp; short int Input; if(NULL==(head=(NODE*)malloc(sizeof(NODE))))
exit(); end=head;
while((Input=getchar())!= EOF)
{
end->Input =Input;
if(NULL==(temp=(NODE *)malloc(sizeof(NODE))))
exit();
temp->next =NULL;
end->next =temp;
end=temp;
} return ;
} /*
函数功能:
'\t' ——> ‘\\’##‘t’
‘\b' ——> '\\'##'b'
'\\' ——> '\\'##'\\'
函数原型:
int Transfer(NODE *)
函数参数:
NODE* head:待处理文本流首地址
函数返回值:
0: 成功执行
1: 没有足够的空间存储分配
异常:
传递空指针参数
*/
int Transfer(NODE* head)
{
NODE* temp;
NODE* NewNode; NewNode=head;
while(NewNode->next != NULL)
{
if(NewNode->Input == '\t')
{
if(NULL==(temp=(NODE*)malloc(sizeof(NODE))))
return ;
//1、先将temp的Input成员设置成‘t’
temp->Input ='t';
//2、然后将temp->next指向NewNode的下一个节点
temp->next =NewNode->next ;
//3、然后将NewNode->next指向temp节点
NewNode->next =temp;
//4、设置NewNode->input为反斜杠 ‘\\’
NewNode->Input ='\\';
}
else if(NewNode->Input == '\b')
{
if(NULL==(temp=(NODE*)malloc(sizeof(NODE))))
return ;
//1、先将temp的Input成员设置成‘t’
temp->Input ='b';
//2、然后将temp->next指向NewNode的下一个节点
temp->next =NewNode->next ;
//3、然后将NewNode->next指向temp节点
NewNode->next =temp;
//4、设置NewNode->input为反斜杠 ‘\\’
NewNode->Input ='\\';
}
else if(NewNode->Input == '\\')
{
if(NULL==(temp=(NODE*)malloc(sizeof(NODE))))
return ;
//1、先将temp的Input成员设置成‘t’
temp->Input ='\\';
//2、然后将temp->next指向NewNode的下一个节点
temp->next =NewNode->next ;
//3、然后将NewNode->next指向temp节点
NewNode->next =temp;
//4、设置NewNode->input为反斜杠 ‘\\’
NewNode->Input ='\\';
}
} return ;
} /*
函数功能:
输出字符流
函数原型:
int EchoLine(NODE *head)
函数参数:
NODE* head:存储字符的首地址
返回值:
无返回值
异常:
传递空指针参数
*/ void EchoLine(NODE* head)
{
NODE* temp;
temp=head;
while(NULL != temp->next )
{
putchar(temp->Input);
temp=temp->next ; //free(temp);
}
}
【算法和数据结构】_14_小算法_Blank字符替换的更多相关文章
- python算法与数据结构-选择排序算法(33)
一.选择排序的介绍 选择排序(Selection sort)是一种简单直观的排序算法.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素, ...
- python算法与数据结构-希尔排序算法(35)
一.希尔排序的介绍 希尔排序(Shell Sort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本.希尔排序是非稳定排序算法. 希尔排序是把记录按下标的一定增量分组,对每 ...
- python算法与数据结构-算法介绍(31)
一.算法和数据结构 什么是算法和数据结构?如果将最终写好运行的程序比作战场,我们程序员便是指挥作战的将军,而我们所写的代码便是士兵和武器. 那么数据结构和算法是什么?答曰:兵法!故,数据结构和算法是一 ...
- 【数据结构】KMP算法
我还是不太懂... 转2篇大神的解释 1>https://www.cnblogs.com/yjiyjige/p/3263858.html 2>https://blog.csd ...
- 数据结构和算法(Golang实现)(23)排序算法-归并排序
归并排序 归并排序是一种分治策略的排序算法.它是一种比较特殊的排序算法,通过递归地先使每个子序列有序,再将两个有序的序列进行合并成一个有序的序列. 归并排序首先由著名的现代计算机之父John_von_ ...
- 算法与数据结构(十七) 基数排序(Swift 3.0版)
前面几篇博客我们已经陆陆续续的为大家介绍了7种排序方式,今天博客的主题依然与排序算法相关.今天这篇博客就来聊聊基数排序,基数排序算法是不稳定的排序算法,在排序数字较小的情况下,基数排序算法的效率还是比 ...
- 数据结构(DataStructure)与算法(Algorithm)、STL应用
catalogue . 引论 . 数据结构的概念 . 逻辑结构实例 2.1 堆栈 2.2 队列 2.3 树形结构 二叉树 . 物理结构实例 3.1 链表 单向线性链表 单向循环链表 双向线性链表 双向 ...
- 浅谈算法和数据结构: 七 二叉查找树 八 平衡查找树之2-3树 九 平衡查找树之红黑树 十 平衡查找树之B树
http://www.cnblogs.com/yangecnu/p/Introduce-Binary-Search-Tree.html 前文介绍了符号表的两种实现,无序链表和有序数组,无序链表在插入的 ...
- Python算法与数据结构--求所有子数组的和的最大值
Python算法与数据结构--求所有子数组的和的最大值 玄魂工作室-玄魂 玄魂工作室秘书 玄魂工作室 昨天 题目:输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个 ...
随机推荐
- git项目远程地址修改后本地如何处理
今天运维人员为了方便管理,将远程的项目地址给迁移了, 原来是 git@git.lalala.com:yuanlaide/happy.git 变成了 git@git.lalala.com:houlaid ...
- 『cs231n』卷积神经网络的可视化与进一步理解
cs231n的第18课理解起来很吃力,听后又查了一些资料才算是勉强弄懂,所以这里贴一篇博文(根据自己理解有所修改)和原论文的翻译加深加深理解,其中原论文翻译比博文更容易理解,但是太长,而博文是业者而非 ...
- PAT 1112 Stucked Keyboard
1112 Stucked Keyboard (20 分) On a broken keyboard, some of the keys are always stucked. So when yo ...
- mqtt------ mosca服务器端参数简介
一:服务器端 为什么使用mosca:mosca是基于node.js开发,上手难度相对较小,其次协议支持完整,除了不支持Qos 2,其它的基本都支持.持久化支持redis以及mongo.二次开发接口简单 ...
- Spring cloud系列之win10 下安装 ZooKeeper 的方法
ZooKeeper 下载地址: https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ 1.将下载的文件解压到指定的目录中 2.进入conf文件夹 ...
- Php基本类型学习
1.8种基本的数据类型 1)四种基本类型 boolean (布尔类型) integer(整形类型) double (双精度类型) string (字符串类型) 2)两种复合类型 array (数组 ...
- 基于 HTML5 的工业组态高炉炼铁 3D 大屏可视化
前言 在大数据盛行的现在,大屏数据可视化也已经成为了一个热门的话题.大屏可视化可以运用在众多领域中,比如工业互联网.医疗.交通.工业控制等等.将各项重要指标数据以图表.各种图形等形式表现在一个页面上, ...
- CCF关于NOIP竞赛程序提交的管理规则
在NOIP复赛中,NOI各省组织单位必须严格遵循CCF<关于NOIP数据提交格式的说明>的规范在竞赛结束后规定时间内向CCF提交本赛区所有参赛选手的程序. 为竞赛的公平以及赛后按时完成竞赛 ...
- 操作系统の实验四 windows中线程的创建和同步控制
摘要: 1.创建信号量 HANDLE CreateSemaphore( LPSECURITY_ATTIBUTES lpSemaphoreAttributes, LONG lInitialCount; ...
- 忘记Linux用户密码怎么办?
忘记密码解决办法(centos6.5版本) 1.开机时,在此页面一直按ESC 2.然后进入以下界面时,按一下字母 “E” 键 (3)再按字母 “E” 键 (4)之后 输入 ...