行编辑命令的实现。

问题分析:

行编辑命令:输入一段话,若输入‘#‘则表示前一个无效,若输入‘@‘则表示这段话作废。

语言实现:

//头文件部分
#pragma once
#define STACK_SIZE 50
typedef char ElemType;
#include<iostream>
#include<assert.h>
using namespace std;

typedef struct Stack
{
  ElemType *base;
  int capacity;
  int top;
}Stack;
/////////////////////////////////
bool Ful(Stack *sta)
{
 return sta->top >= sta->capacity;
}

bool Init(Stack *sta)
{
	sta->base = (ElemType *)malloc(sizeof(ElemType)*STACK_SIZE);
	assert(sta->base != NULL);

	 sta->top = 0;
	 sta->capacity = STACK_SIZE;
	return true;
}

bool push_stack(Stack *sta,ElemType x)
{
   sta->base[sta->top++] = x;
   return true;
}

bool pop_stack(Stack *sta)
{
  if(sta->top == 0)
  {
	 cout<<"the stack is empty"<<endl;
	 return false;
  }
  cout<<sta->base[sta->top-1];
  sta->top--;
 return true;
}

void show_stack(Stack *sta)
{
  int i = 0;
  while(i < sta->top)
  {
    cout<<sta->base[i];
	i++;
  }
  cout<<";"<<endl;
}

void clear(Stack *sta)
{
  sta->top = 0;
}

void delete_stack(Stack *sta)
{
  sta->top--;
}
//主函数部分
#include"stack.h"
void main()
{
  Stack myst;
  char str;
  char  select;
  Init(&myst);
 while(select != '0')
 {
	cout<<"请输入并以','结束:";
	while(cin>>str,str!= ',')
	{
	  if(Ful(&myst))
	  {
		  cout<<"空间不够"<<endl;
		 return ;
	  }
      if(str == '#')
		 delete_stack(&myst);
     else if(str == '@')
		 clear(&myst);
	 else
		 push_stack(&myst,str);
	}
	push_stack(&myst,',');
    show_stack(&myst);
    cout<<"继续请选1,退出选择0:";
    cin>>select;
 }
 return ;
}

分析:此问题是栈结构的一种应用,理解栈结构后很容易就能解决此问题。

时间: 2024-10-06 21:43:25

行编辑命令的实现。的相关文章

Bash命令行编辑

1.Readline库和命令行编辑 bash shell提供了两个内置编辑器:emacs和vi,利用它们可以以交互模式对命令行列表进行编辑,这项特性是通过Readline库的软件包实现的.当使用命令行编辑功能时,无论是vi还是emacs模式,都是readline的函数决定哪一个键对应哪一项功能.例如,使用emacs模式,则Ctrl-P允许在历史列表中向上滚动. 2.设置命令行编辑器 内置emacs编辑器是默认的内置编辑器.#set -o vi //设置vi为命令行编辑器 #set -o emac

linux常用命令-命令行编辑,history,命令行快捷键,pstree,alias,命令替换,通配符

命令行编辑:光标跳转: Ctrl+a:跳到命令行首 Ctrl+e:跳到命令行尾 Ctrl+u: 删除光标至命令行首的内容 Ctrl+k: 删除光标至命令行尾的内容 Ctrl+l: 清屏 Ctrl+d: 删除光标后面内容 命令历史:查看命令历史:history -c:清空命令历史 -d OFFSET [n]: 删除指定位置的命令 -w:保存命令历史至历史文件中 环境变量PATH:命令搜索路径HISTSIZE: 命令历史缓冲区大小 命令历史的使用技巧:!n:执行命令历史中的第n条命令: [[emai

vim学习记录(二)高效编辑(命令行)

直接正文,第二部分高效编辑. 一.命令行编辑 1.命令行输入 : 输入后自动跳转到命令行,接受命令输入 ? 输入后自动跳转到命令行 / 输入后自动跳转到命令行 2.命令行移动光标 left 向左移动一个字符 right 向右移动一个字符 s+left or c+left 向左移动一个单词 s+right or c+right 向右移动一个单词 c+b or home 移动到开头(begin) c+e or end 移动到结尾(end) 3.命令行删除 backspace 删除光标前一个字符 c+

命令行编辑

光标跳转: crtl+a: 跳到命令行首 crtl+e: 跳到命令行尾 crtl+d: 删除光标后的单个字符 crtl+w: 删除光标前的单词 crtl+k: 删除光标后的所有 crtl+u: 删除光标前的所有 ctrl+l: 清屏 命令历史: 查看命令历史:history -c: 清空命令历史 -d: 删除指定位置的命令 -w: 保存命令历史至历史文件中 环境变量 PATH: 命令搜索路径 HISTSIZE: 命令历史缓冲区大小 命令历史的使用技巧 !N: 执行命令历史中的第N条命令 !-N:

bash特性-命令历史命令行编辑

bash: GUI:Gnome,KDE,XFCE CLI:sh,csh,bash,ksh,tcsh,zsh shell,子shell tree:查看目录树 pstree:查看进程目录树 bash: 1.命令历史.命令补全 2.管道.重定向 3.命令别名 4.命令行编辑 5.命令行展开 6.文件名通配 7.变量 8.编程 命令行编辑: 光标跳转: Ctrl+a:跳到命令行首 Ctrl+e:跳到命令行尾 Ctrl+u:删除光标至命令行首的内容 Ctrl+k:删除光标至命令行尾的内容 Ctrl+l:清

Bash命令行编辑模式

Linux下Bash命令行编辑的默认模式是交互式emacs模式.切换模式: set -o emacs #设置emacs模式 set -o vi #设置vi模式 Bash命令行编辑模式

Linux命令行编辑常见的快捷键(有用, 通用)

本文讲述了Linux命令行编辑常见的快捷键,希望对您有所帮助. Linux命令行编辑快捷键: history 显示命令历史列表 ↑(Ctrl+p) 显示上一条命令 ↓(Ctrl+n) 显示下一条命令 !num 运行命令历史列表的第num条命令 !! 运行上一条命令 !?string? 运行含有string字符串的最新命令 Ctrl+r 然后输入若干字符,開始向上搜索包括该字符的命令,继续按Ctrl+r,搜索上一条匹配的命令 Ctrl+s 与Ctrl+r类似,仅仅是正向检索 Alt+< 历史列表第

Linux命令行编辑常见的快捷键(实用, 通用)

本文讲述了Linux命令行编辑常见的快捷键,希望对您有所帮助. Linux命令行编辑快捷键: history 显示命令历史列表 ↑(Ctrl+p) 显示上一条命令 ↓(Ctrl+n) 显示下一条命令 !num 执行命令历史列表的第num条命令 !! 执行上一条命令 !?string? 执行含有string字符串的最新命令 Ctrl+r 然后输入若干字符,开始向上搜索包含该字符的命令,继续按Ctrl+r,搜索上一条匹配的命令 Ctrl+s 与Ctrl+r类似,只是正向检索 Alt+< 历史列表第一

mac shell终端编辑命令行快捷键——行首,行尾

Ctrl + d        删除一个字符,相当于通常的Delete键(命令行若无所有字符,则相当于exit:处理多行标准输入时也表示eof) Ctrl + h        退格删除一个字符,相当于通常的Backspace键 Ctrl + u        删除光标之前到行首的字符 Ctrl + k        删除光标之前到行尾的字符 Ctrl + c        取消当前行输入的命令,相当于Ctrl + Break Ctrl + a        光标移动到行首(Ahead of l