Xinspace


  • 首页

  • 归档

  • 搜索

用栈实现简单的行编辑器

发表于 2013-03-30 | 分类于 Programming

所谓简单的行编辑器,描述如下:

接受用户从终端输入的程序或数据,并将最后结果显示到屏幕上。由于用户输入时,不能保证不出差错,因此,若在编辑程序中,“每接受一个字符即输出到屏幕上“的做法显然不恰当。较好的做法是,设立一个输入缓冲区,用以接受用户输入的一行字符,然后一次性将其显示到屏幕上。允许用户 输入出错并及时改正。以”#“表示退格,删除上一个字符。以”@“表示退行,删除一整行。例如接受如下两行字符:

whli##ilr#e(s#*s)

outchar@putchar(*s=#++);

最终有效的是下列两行:

while(*s)

putchar(J*s++);

因此,可以给这个缓冲区为一个栈结构,每当c从终端接受了一个字符之后先作如下判别:如果它既不是退格符也不是退行符,则将其压栈;如果是一个退格符,则从栈顶删除一个元素;如果是退行符,则清空栈。

阅读全文 »

用栈实现括号匹配

发表于 2013-03-30 | 分类于 Programming

括号匹配的意思

假设只允许出现两种括号:圆括号和方括号,其嵌套顺序随意,即不管[([])]或[([])]等都为正确匹配,但是形如([][)就成为错误的匹配。

实现的算法

可以用“期待的紧急程度”的概念来描述:

如 [([][])] 共8个括号,从左往右依次标代号为1-8,即第一个[代号为1,第二个(代号为2,第三个[代号为3,依次类推

当计算机收到了第一个括号后,期待它与第八个括号匹配,然而等来的却是第二个括号,此时第一个括号‘[’只能暂时靠边,第二个括号的急迫程度又大于第一个括号,期待与之匹配的第七个括号的到来,然而却等来了第三个括号,这时第二个括号又要暂时靠边,第三个括号的急迫程度比第二个括号大,期待与之匹配的第四个括号的到来,第四个括号到来后与第三个括号相匹配,所以第三个括号的急迫就解决了。此时急迫程度最大的变成了第二个括号了,依次类推下去。

啊,我估计各位看完上面一小段的描述之后,可能觉得天花乱坠,云里雾里的。下面就用比较通俗的语言来说一下。

阅读全文 »

用栈实现数制转换

发表于 2013-03-30 | 分类于 Programming

这个小程序现在只实现了十进制转N进制,N进制往十进制或者N进制之间相互转换还没有实现,等到以后补充。

十进制转N进制的算法很简单,描述如下:

变量dec表示十进制数,变量des表示转换成的目标N进制数,变量n表示要转换的N进制

如dec=15, n=2, 则得到 des=1111

转换步骤如下:

1.用dec除以n得到商为s,余数为y;

2.把s的值赋给dec,以便进行下一次计算;

2.判断s是否为0,如果为0,则表示转换结束,退出程序,若不为0,则表示还没有转换结束,跳转到第一步继续执行;

阅读全文 »

用线性表实现多个多项式相加

发表于 2013-03-30 | 分类于 Programming

今天开始想复习一下数据结构,就从线性表开始吧。

今天是用线性表实现多个多项式相加这个题目,自变量是x。

题目描述如下:

在数学上,一个一元多项式Pn(x)可按降幂写成:Pn(x) = pn x^n + p(n-1) x^n + ……. + p2x^2 + p1x^1 + p0,它由n+1个系数唯一确定。同样的Qn(x)也可以写成如P多项式一样。当两个多项式的某一项指数相同时,可将这项的底数相加,这称为多项式相加。

如:多项式P: 5x^4 + 3x^2 + 4 多项式Q:3x^3 + 2x^2 + 2 。 则P+Q:5x^4 + 3x^3 + 5x^2 + 6

代码如下:

阅读全文 »

linux 下用 man 命令不能查阅标准库函数的解决方案

发表于 2013-03-30 | 分类于 Others

这两天在写程序,然后用 man 查看标准库函数或系统调用的时候发现出现错误,比如在查看free()函数时的错误为:No manual entry for free,即没有free()这个函数的联机手册。

按道理说联机手册是有关于标准库函数和系统调用的呀,怎么查不到呢?

原因就在于系统中没有安装完全联机手册,解决方案:

在命令行输入以下命令:sudo yum install man-pages即可。

若为debian系列的(如ubuntu或linux mint等)输入:sudo apt-get install man-pages.

用u盘安装操作系统

发表于 2013-03-30 | 分类于 Others

自从用了linux之后,各种发行版出的时络绎不绝啊!所以,如果想要在物理机上安装个个版本尝尝鲜的话,还要刻N多的碟子(我大一的时候就刻了6张碟子,惨啊~),极为不方便。

比起刻碟子,用u盘安装操作系统方便,环保还节约(最起码不用买N张空碟子,而且刻碟子多了对本机的光驱也是有损害的)。鉴于这个特点,我决定放弃光碟,改用u盘来安装各种操作系统。

将操作系统(windows或linux发行版都可以)写入u盘最为启动设备的步骤如下:

1.下载linux live usb creator(简称lili),网址:http://www.linuxliveusb.com/

注意哈,这个lili现在只有windows版本的,也就是你必须再windows下才能使用这款软件,这款软件可以将操作系统写入到u盘,将u盘制作成启动设备。虽然lili的全称时linux live usb creator,但并不意味着只能写linux操作系统,windows操作系统也能识别,只不过linux操作系统(若含有live版)比windows多了live mode。

2.安装lili,出现如下图所示的界面(可以说lili做的很漂亮的说):

Screenshot from 2013-02-23 20:43:41

可以看到安装步骤共又5步(在虚拟机中截图的,没截完全)。

3.将操作系统写入u盘:

第一步:选择要作为启动设备的u盘等移动设备(这个应该都会)

这个lili软件比较有意思,如果你每一步的选择都可行的话,它右边的红绿灯就会亮绿灯,如果不可行就亮红灯,如果有些小欠缺就会亮黄灯。

阅读全文 »

fedora18安装软件时出现GPG key retrieval failed: [Errno 14]的解决方案

发表于 2013-03-30 | 分类于 Others

前两天我在fedora18上看视频的时候就遇到了这个问题,在装视频播放器解码插件的时候就出现过这个问题:

GPG key retrieval failed: [Errno 14] Could not open/read file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-18-i386

不过上次的解决方案是下载KEY文件,并导入到系统中,问题就解决了。

不过,今天,当我的软件升级时,又蹦出了这个问题,这可让我郁闷了。不过还是从网上找到了解决方案

在命令行中输入:

sudo yum localinstall –nogpgcheckhttp://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-branched.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-branched.noarch.rpm

之后,就可以正常的安装软件了。

如果你现在的系统还无法看视频的话可以看本博文:http://xinspace.web-130.com/index.php/2013/02/23/fedora18-video-rmvbavi-mp3/

好啦~我去升级软件啦!

fedora18自带的video视频播放器不能播放视频(rmvb和avi)和音频(mp3)

发表于 2013-03-30 | 分类于 Others

装了fedora18之后,就一直努力解决自带的video视频播放器不能播放视频音频。

用video打开视频之后,总会弹出提示框说需要xxxx插件,是否搜寻(search),然后点击search之后,又说找不到。我了个去,这不是要命嘛。

在我的不懈努力下,终于还是解决了这个问题啦~

步骤如下:

1.在命令行输入:su -c ‘yum localinstall –nogpgcheck http://mirrors.163.com/rpmfusion/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://mirrors.163.com/rpmfusion/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm‘

阅读全文 »

virtualbox不能识别u盘等移动设备

发表于 2013-03-30 | 分类于 Others

装好了virtualbox,美滋滋的享受着,但是又碰到问题了,我的virtualbox装了win7,但是win7不能识别到u盘和移动硬盘这些移动设备,但是主机却能识别到,这就让我郁闷了!

又去找万能的google(不过说起来这几天google貌似有些慢有些卡了),还是又百度吧。

结果在百度上还真找到了答案

解决步骤如下:

1.打开终端(我的主机是fedora),输入命令sudo usermod -G vboxusers -a your_account_name

其中,your_account_name指你现在的用户名,这条命令是将你目前使用的用户加入到virtualbox的用户组中,这样这个用户上的资源在virtualbox中也能使用,这就意味着在我这个用户下能识别的u盘,在virtualbox也能识别了。

2.注销你的系统,然后再登陆(这样作的目的是让virtualbox用户组成员更新一下,以便加入我们当前用户到其用户组中)

3.别着急,还有后续步骤呢。接下来,打开virtualbox 的 settings下的usb选项,如下图:

Screenshot from 2013-02-23 00:26:29

上面有两个选框,都选上(一般来讲,第一个选框自动选中了,第二个选框若要选中的话,必须要安装Guest Addtionals,安装步骤见本博客的安装virtualbox步骤——在本博客最上面的search框中键入virtualbox安装步骤即可搜到相应博文)

4.点击右边的加号,就能看到你当前主机中已识别的u盘等移动设备了,然后点击加入即可。

 

最最主要的就是将当前用户加入到virtualbox的用户组中。

linux主机,win7客户机 在virtulbox下设置共享目录步骤

发表于 2013-03-30 | 分类于 Others

用virtualbox在客户机和主机之间建立一个共享目录,是用来主客机之间传送数据方便。virtualbox不像vmware一样可以在主机上复制一个文件后,直接到客户机中粘贴传送数据这么简单。在virtualbox中主客机传送数据要么通过U盘,要么就要通过共享目录了。所以共享目录还是很必要的。

但是,如果你是以linux(如fedora)为主机,以windows为客户机来安装的,网上找设置共享目录的资料就很少(本人就找了一段时间,很是烦人,特此记录下来,以免以后忘记了)。步骤如下(该步骤包含了linux主机,windows客户机和windows主机,linux客户机的设置):

1.当然是要在linux上安装virtualbox,并且要在virtualbox中安装好虚拟机系统啦。

2.安装Guest Additions啦,点击virtualbox的Devices,就会出现一个选项叫Install Guest Additions(安装它的时候要打开虚拟机系统,点击之后若无任何反映,则打开Computer的CD-ROM即可,点击安装)。如果是linux从机,那么进入/media/VBOXADDITIONS 目录,执行命令:$sudo ./VBoxLinuxAdditions.run

3.点击virtualbox的Devices,点击Shared Folders选项,就打开了设置对话框

4.点击对话框右边的加号,就会出现对话框

阅读全文 »
1…151617

Xinspace

Personal blog from xin.

170 日志
6 分类
1 标签
© 2019 Xinspace
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4