2 beingvague beingvague 于 2016.03.02 06:17 提问

一道C++读取文件,动态数组和自定义指令的题目,有什么最优解答?

读取123.txt,里面含有以下几种指令:
ADD_F ADD_B REMOVE_F REMOVE_B RESULT
开始要求创建一个空数组
例如
ADD_F 2 3 5:在数组开头增加2 3 5
ADD_B 3 5 6:在数组结尾增加3 5 6
REMOVE_F 3:删掉数组头3个数字
REMOVE_B 2:删掉数组后2个数字
RESULT:输出当前数组

例子
ADD_F 1 2 3
ADD_B 5 6 7
RESULT
1 2 3 5 6 7
REMOVE_F 2
REMOVE_B 2
RESULT
3 5

6个回答

caozhy
caozhy   Ds   Rxr 2016.03.02 08:05

就你的问题来说,最好的做法是双向循环链表。

beingvague
beingvague 谢谢,很有帮助!
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.03.02 08:13
WinsenJiansbomber
WinsenJiansbomber   2016.03.02 09:33

这个题有趣,相当于在做汇编程序,基本思想是这样的。

jianwen0529
jianwen0529   Rxr 2016.03.02 09:50

std::list

WinsenJiansbomber
WinsenJiansbomber   2016.03.02 13:03

其實這没什么什么很深的算法学问啊,基本的解题思路如下:

  • 实现数据读取,分行处理就行;
  • 按伪指令要求实现数组的操作函数;
  • 实现伪指令字符的判断,如果伪指令数量巨多,那么可以考虑使用映射表来实现伪指令到相应操作函数的快速定位;
  • 依次处理每一行数据

如果伪指令还需要中间指定位位置插入,那在数据量不多的前提下用一般的数组结结构加一点数组分割重组的代码就可以了。
但是大量数据的情况下就不能这样做了,十分高耗,按caozhy提议用链表更佳。

bjay
bjay   2016.03.02 13:34

flex和bison能够很好地处理这个问题。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
使用缓冲流读取试题文件,每次显示试题文件中的一道题目。读取到字符“*”时候暂停读取,等待用户从键盘输入答案。用户做完全部题目后,程序给出用户的得分。Test.txt如下:
題目內容: 使用缓冲流读取试题文件,每次显示试题文件中的一道题目。读取到字符“*”时候暂停读取,等待用户从键盘输入答案。用户做完全部题目后,程序给出用户的得分。Test.txt如下:   (1)北京奥运是什么时间开幕的?    A.2008-08-08 B. 2008-08-01    C.2008-10-01D. 2008-07-08 ****************
动态规划7:最优编辑练习题
动态规划7:最优编辑练习题
vector动态数组(用法)
在c++中,vector是一个十分有用的容器。作用:它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。特别注意:使用vector需要注意以下几点:1、如果你要表示的向量长度较长(需要为向量内部保存很多数),容易导致内存泄漏,而且效率...
经典趣味数学题—分油问题的一般性求解
分油问题是一道非常经典的初等数学趣味题。它有很多种表述版本。例如, 版本1:日本分油问题。有一个装满油的8公升容器,另有一个5公升及3公升的空容器各 一个,且三个容器都没有刻度,试将此8公升油分成4公升。. 版本2:法国著名数学家泊松年轻时研究过的一道题: 某人有12品脱美酒,想把一半赠人,但没有6品脱的容器,而只有一个8品脱和一个5品 脱的容器,问怎样才能把6品脱的酒倒入8品脱的容器中。
一个特别有意思的程序,在一本书上的题目,但是书上答案是错的。
#include   int main() {     intnumber;     char*arr[] = { "Illagal day","Monday","Tuesday","Wednesday","Thursday",                    "Friday","Saturday","Sunday"};     printf("plese i
打印·剥洋葱
2016年吉首大学信息学院程序设计新生赛 pta
103 一道题目玩转指针数组和二级指针
C学习网:链接->C学习网 C训练网:链接->C训练网 请大家先看下面的代码: #include int main(){ char *lines[5] = { "COSC1283/1284", "Programming", "Techniques", "is", "great fun" };
剥洋葱
布告,布告! 应老师要求,我们要做一道打印图形的题目,这是程序员最基本的能力。 那废话不多说,我们来说要求的图形 AAAAA ABBBA ABCBA ABBBA AAAAA 就是外到内,从A到Z。每一层都是一种字母,最里面的一层为一个,即最中心的一个。 输入格式: 一行,一个整数,即图形的层数 输出格式: 如上述图形 输入样例: 3 输出样例: AAAAA
题目-剥洋葱
5-14 剥洋葱   (15分) 布告,布告! 应老师要求,我们要做一道打印图形的题目,这是程序员最基本的能力。 那废话不多说,我们来说要求的图形 AAAAA ABBBA ABCBA ABBBA AAAAA 就是外到内,从A到Z。每一层都是一种字母,最里面的一层为一个,即最中心的一个。 输入格式: 一行,一个整数,即图形的层数 输出格式: 如上述图形 输入样例:
杨辉三角与一道经典笔试面试题目
Leetcode 是一个美国的在线编程网站,上面主要收集了各大IT公司的笔试面试题,对于应届毕业生找工作是一个不可多得的好帮手。我相信很多有求职需求的读者都刷过Leetcode上面的题目。本文分析Leetcode中的Pascal's Triangle(I和II)两题的解析。我提供了基于queue和vector两种方式的实现