行编辑程序

《行编辑器》 程序中运用了栈的静态分配顺序存储结构,它使用了数组来实现栈中元素的存储,并设置了存储栈元素的数组长度为MaxSizwe。(1)top为整数且指向栈顶元素的下一个位置;(2)top为整数且指向栈顶元素。 阅读详情

一直 熬夜熬到 凌晨 3点 , 头昏昏沉沉  , 起身想把昨夜没有写完的一点 代码写了 ,  写完之后 ,  寝室还没有来电 , 舍友也还在睡觉 , 可是天真的很亮很亮了.

这个行编辑程序是这样的 , 把控制台(键盘)上的每一个输入的 字符都 入栈 ,  以0位 文件结束符,@表示整个一行都输错了,要重新输入. #表示刚才的一个字符输错了,撤销掉它 . 按下 回车之后 ,  会把之前输的所有合法的字符输出到控制台上.

这个行编辑程序是基于栈的. #要撤销一个字符 , 对应的操作就是退栈 . 而@要撤销掉刚输入的所有字符 , 对应的操作就是清空 栈.

按下回车之后会把输入的合法字符都输出到控制台上 , 对应的操作就是依次输出栈元素.

下面是代码:(用c++写的)

#include<iostream>
#include<stdlib.h>
using namespace std;

#define   STACK_INIT_SIZE 100       //存储空间初始分配量 
#define   STACKINCREMENT   10       //存储空间增量 

typedef  struct 
{
	char *base;     //栈构造之前和销毁之后,base为null
	char *top ;     //栈顶指针
	int  stacksize; 
}SqStack;


int main()
{
	//申明 
	void LineEdit();
	LineEdit();
}


bool  InitStack(SqStack &s)   //构造一个空栈 
{
	s.base = (char*) malloc(STACK_INIT_SIZE * sizeof(char) );
	if(!s.base) 
	{
		cout<<"空间分配失败!"<<endl;
		return false; 
	}
	s.top = s.base;
	s.stacksize = STACK_INIT_SIZE;
	return true;
}

bool    Push(SqStack &s , char &e)     //插入元素e为新的栈顶元素 
{
	if(s.top - s.base >= s.stacksize)  //栈满,追加存储空间 
	{
		s.base = (char*) realloc(s.base , (s.stacksize + STACKINCREMENT) * sizeof(char) );
		if(!s.base)   
		{
			cout<<"空间分配失败!"<<endl;
			return false;
		}
		s.top = s.base+ s.stacksize;
		s.stacksize += STACKINCREMENT;
	}
	
	*s.top++ =e;
	return true;
}

bool ClearStack(SqStack &s)   //把s置为空栈 
{
	if(s.base == NULL)  return false;
	else
	{
		s.top = s.base;
		return true;
	}
}

bool  Pop(SqStack &s , char &e)    //出栈 , 出栈元素赋给e 
{
	if(s.top == s.base)  return false;
	e = *--s.top;
	return true;
}

void  DestroyStack(SqStack  &s)
{
	free(s.base);
	free(s.top);
	free(&s);
}

void  LineEdit()
{
	//申明
	bool InitStack(SqStack &s) ;
	bool Pop(SqStack &s , char &e);
	bool ClearStack(SqStack &s);
	void DestroyStack(SqStack &s);
	bool Push(SqStack &s , char &e);
	void vist(SqStack s);
	
	SqStack s;
	char c;   //接收退栈后的元素 
	InitStack(s);
	cout<<"请输入:"<<endl; 
	char ch = getchar();   //从终端接收一个字符 
	while(ch != 0)  //设定0为全文结束符 
	{
		while(ch!= 0  && ch!='\n')
		{
			switch(ch)
			{
				case '#' : Pop(s , c);     break;
				case '@' : ClearStack(s);  break;
				default: Push(s ,ch);      break;
			}
			ch = getchar();   //从终端接收下一个字符 
		}
		
		vist(s);
		ClearStack(s);
		cout<<endl;
		if(ch  != 0)  ch = getchar();
	}
	
	DestroyStack(s);
}

void  vist(SqStack s)
{
	if(s.base == s.top)
	{
		cout<<"行输入为空"<<endl; 
	}
	else
	{
		cout<<"行编辑的结果:"; 
		do
		{
			cout<<*s.base;
			s.base ++;
		}while(s.base  != s.top);
	}
}
下面是运行结果图:

4点了,就写到这里. 最后多谢严蔚敏的支持.


第11篇 基础 (十一)详解Line Edit:行编辑 1、介绍的控件 提供单行文本编辑框。 2、信号函数和常用类成员函数 建立一个工程文件,打开ui,拖进去一个Line Edit控件。【右键】—【转到槽】 例如:cursorPositionChanged(int, int) 信号 void cursorPositionChanged(int, int) 光标位置改变,发射信号。前面的位置是老的 ,新的位置是新的。 转到槽函数如下: 槽函数测试验证: void lineedit::on_lineEdit_cursorPos... 阅读详情

相关推荐

【大模型12步学习路线 · 第3步 · ③IC验证实战篇】SOTA Prompt 逐字拆解

本文拆解了4篇SOTA LLM4Verification论文的Prompt设计,重点分析了AssertLLM、RTLFixer等模型在IC验证领域的Prompt工程实践。AssertLLM通过任务分解为3个专用LLM(Spec分析、信号映射、SVA生成),结合领域RAG和定制System Prompt,将SVA准确率从GPT-4的8%提升至89%。RTLFixer采用ReAct框架实现98.5%的RTL语法错误修复率。文章总结了Prompt设计的关键技巧:任务分解、结构化输出、置信度评分、允许"不确定"标记

元直的博客 582

数据结构课程设计—简单行编辑程序

一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。而在使用时,却是从顶上拿取,也就是说,后冼的先取用,后摞上的先取用。栈是一种先进后出的线性表,为了能按照原来的输入顺序输出元素,我在程序中设计了两个栈,第一个栈用来存储输入的字符,然后把第一个栈的元素出栈,并且把出栈的元素放入第二个栈中,这样就实现了出栈是元素的顺序和最开始输入的顺序是一致的了。

xieailei的博客 3453

保姆级教程:用Docker Compose一键部署WVP-PRO+ZLM+录像服务(含Nginx反代)

本文提供了一套完整的容器化GB28181视频平台部署方案,通过Docker Compose实现WVP-PRO、ZLMediaKit(ZLM)和录像服务的一键式部署。详细介绍了环境准备、架构设计、容器化部署实战以及高级配置优化,帮助用户快速搭建高性能视频监控管理平台,适用于安防行业和物联网设备管理场景。

weixin_30415113的博客 860

简单行编辑程序设计文档(数据结构)课设

文章目录摘要 摘要 文本编辑程序是利用计算机进行文字加工的基本软件工具,实现对文本文件的插入、删除等修改操作。限制这些操作以行为单位进行的编辑程序称为行编辑程序。行编辑器只能从事最简单的输入输出。输入、编辑、文档显示并不能同步地进行。编辑的文本文件可能很大,全部读入内存的做法既不经济也不易实现。一种解决办法是逐行地编辑,任何时刻只把待编辑文件的一行放在内存,称为活区。允许输入出错时发现错误并及时更正。一般而言,用户无法直接输入文本,而只能在文本终端上通过简要的命令,对已有的文档进行添加或编写。现利用字符串来

Run_Snails的博客 8209

NVIDIA Jetson Xavier NX刷机+ROS安装+深度学习配置

.NVIDIA Jetson Xavier NX 完整说明流程 V1.0.0 – by Holden Date : 2021-03-19 文章目录.NVIDIA Jetson Xavier NX 完整说明流程1. Jetson Xavier NX简介2. Jetson Xavier NX刷机介绍2.1 工具准备工作2.2 下载镜像以及烧录工具2.3 烧录原生镜像到TF卡2.4 开机启动2.5 组件配置4. 镜像克隆制作5. 镜像重烧写6. NX调控命令 1. Jetson Xavier NX简介 ​ NVI

李老板Holden的博客 7618

KMS服务器一键部署与激活实战指南

本文详细介绍了KMS服务器的一键部署与激活实战指南,包括快速入门、安装步骤、服务管理技巧及常见问题排查。特别针对Windows和Mac用户提供了Office激活的具体操作步骤,并分享了高级配置与优化方案,帮助IT管理员高效管理批量授权激活。

weixin_29305313的博客 459

实现行编辑程序

行编辑程序就是,当一个用户键入一个字符是错误的可以使用。’字符进行退格,或则使用‘使用栈实现行编辑程序。

niulinbiao的博客 532

拌合楼软件开发(24)接收微信消息生成车辆计划

【摘要】针对拌合站客户群体文化程度不高、习惯微信群沟通的业务场景,提出通过企业微信机器人实现微信对话下单的解决方案。核心是利用WorkTool工具的消息回调机制:1)配置接收消息的API接口;2)解析JSON格式的对话数据,筛选@机器人的有效消息;3)采用*号分隔符提取订单信息并进行校验;4)建立微信昵称与客户系统的映射关系。方案解决了传统系统登录门槛高的问题,但需注意群名唯一性、多系统对接及客户身份识别等关键问题。全文重点阐述技术实现逻辑而非具体代码。

morsth的博客 1042

简单行编辑程序

实验题目:简单行编辑程序 [问题描述] 文本编辑程序是利用计算机进行文字加工的基本软件工具,实现对文本文件的插入、删除等修改操作。限制这些操作以行为单位进行的编辑程序称为行编辑程序。 被编辑的文本文件可能很大,全部读入编辑程序的数据空间(内存)的做法既不经济, 也不总能实现。一种解决方法是逐段地编辑。任何时刻只把待编辑文件的一段放在内存,称为活区。试按照这种方法实现一个简单的行编辑程序。设文件每行不超过 320 个字符,很少超过 80 字符。 [基本要求] 实现以下 4 条基本编辑命令: (1) 行插入。格

kyrie_sakura的博客 4784

工业相机图像格式深度解析:从Mono8到Mono12的选型与应用

本文深度解析工业相机黑白图像格式,重点对比Mono8、Mono10与Mono12的核心差异。文章从位深、动态范围和数据量等关键概念切入,详细阐述了不同格式的优缺点及适用场景,为工业视觉项目中的相机选型提供实战指南,帮助用户在精度、速度与成本间做出最优决策。

weixin_29207439的博客 260

OpenClaw Docker 安装与部署教程,环境隔离不冲突技术指南

本文介绍了使用Docker容器化部署OpenClaw的完整教程。首先通过流程图详细说明了Docker环境检测流程,包括系统支持性检查、Docker安装状态验证、版本检测和服务配置等步骤。然后提供了Windows、macOS和Linux(Ubuntu/CentOS)系统下的Docker安装指南,涵盖从下载、安装到权限配置的全过程。最后介绍了OpenClaw官方镜像的拉取方法以及自定义镜像构建的Dockerfile示例。该教程适用于开发和生产环境,利用Docker实现环境隔离和快速部署。

一键难忘的博客 987

8587 行编辑程序

利用栈编写简单的行编辑程序:接受用户从终端输入的程序或数据,在输入过程中,允许用户输入出差错,并在发现有误时可以及时更正。例如:当用户发现刚刚键入的一个字符是错的时,可以补进一个退格符“#”,以表示前一个字符无效;如果发现当前键入的行内差错较多或难以补救,则可以键入一个退行符“@”,以表示当前行中的字符均无效。例如:假设从终端接受了这样两行字符: whli##ilr#e (s#*s) outcha@putchar(*s=#++);则实际有效的是下列两行: while (*s) putchar(*s++);

Caitlin_lee_的博客 789

数学之美:欣赏超越数e

文章目录一、e为何物?二、利息与e的关系1、利息问题2、计算利息3、欣赏螺旋线(1)螺旋线概述(2)绘制螺旋线三、e和π 一、e为何物? e是一个无限不循环小数,其值约等于2.718281828…,它是一个超越数,有时也称为欧拉数(Euler’s Number)。 以e为底的对数称为自然对数(Natural Logarithm),数学中使用自然这个词的还有自然数(Natural Number)。 这里的“自然”并不是现代人所习惯的“大自然”,而是有点儿“天然存在,非人为”的意思。 二、利息与e的关系

howard2005的专栏 1713

SCAU 8587 行编辑程序

8587 行编辑程序 时间限制:1000MS 代码长度限制:10KB 提交次数:3976 通过次数:1807 题型: 编程题 语言: G++;GCC Description 利用栈编写简单的行编辑程序:接受用户从终端输入的程序或数据,在输入过程中,允许用户输入出差错,并在发现有误时可以及时更正。例如:当用户发现刚刚键入的一个字符是错的时,可以补进一个退格符“#”,以表示前一个字符无效;如果发...

Maoxim的博客 2569

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

行编辑程序(栈实现)

#include<malloc.h> #include<stdio.h> #include<stdlib.h> #include<math.h> #define OK 1 #define ERROR 0 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef char SElemT...

未来大牛的博客 1673

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

行编辑程序——栈和队列

Description 一个简单的行编辑程序的功能是:接收用户从终端输入的程序或数据,并存入用户的数据区。由于用户在终端上进行输入时,不能保证不出差错,因此,若在编辑程序中,“每接收一个字符即存入用户数据区”的做法显然不是很恰当。较好的做法是,设立一个输入缓冲区,用以接收用户输入的一行字符,然后逐行存入用户数据区。允许用户输入出差错,并在发现有误时可以及时更正。例如,当用户发现刚刚键入的一个字符是...

欢迎光临雨落星辰的博客 1314

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

DS||行编辑程序

题目描述 一个简单的行编辑程序的功能是:接收用户从终端输入的程序或数据,并存入用户的数据区。由于用户在终端上进行输入时,不能保证不出差错,因此,若在编辑程序中,“每接收一个字符即存入用户数据区”的做法显然不是很恰当。较好的做法是,设立一个输入缓冲区,用以接收用户输入的一行字符,然后逐行存入用户数据区。允许用户输入出差错,并在发现有误时可以及时更正。例如,当用户发现刚刚键入的一个字符是错的时,可补进...

Lhw_666的博客 410
上一篇: 基于开放定址法的哈希造表和查找
下一篇: c++知识点总结
libingbojava
博客等级 码龄9年 64粉丝 111原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值