使用栈实现进制转换、括号匹配的检验、行编辑程序
2017-08-02 20:14
375 查看
使用栈实现进制转换、括号匹配的检验、行编辑程序
使用栈实现进制的转换
本文所使用的栈的实现:顺序栈的实现将十进制转换为二进制
C语言实现代码
void conversion(int num) { SqStack stack; initStack(&stack); while (num / 2) { push(&stack, num % 2); num /= 2; } push(&stack, num); int tmp = 0; while (!isEmpty(&stack)) { pop(&stack, &tmp); printf("%d", tmp); } }
使用栈实现括号匹配的检验
void check_symbol() { char s[50] = { 0 }; printf("请输入一串括号"); scanf("%s", s); SqStack stack; initStack(&stack); push(&stack, s[0]); for (int i = 1; s[i] != 0; i++) { if (!isEmpty(&stack)) { if (getStackTop(stack) == (int) '{'&&s[i] == (int)'}' || getStackTop(stack) == (int) '('&&s[i] == (int)')') { int tmp; pop(&stack, &tmp); } else { push(&stack, s[i]); } } else { int tmp; push(&stack, s[i]); } } if (isEmpty(&stack)) { printf("括号匹配"); } else { printf("括号不匹配"); } }
使用栈实现行编辑器
void lineEdit() { //首先初始化栈 SqStack stack; initStack(&stack); char ch = getchar(); while (ch != EOF) { while (ch != EOF&&ch!='\n') { switch (ch) { case '@':clearStack(stack); break; case '#':if (isEmpty(&stack)) break; else { int tmp; pop(&stack, &tmp); break; } default: push(&stack, ch); break; } ch = getchar(); } ch = getchar(); } //用于将存储在栈中的内容输出 if (ch == EOF) { while (!isEmpty(&stack)) { int tmp; pop(&stack, &tmp); printf("%c", tmp); } } }
相关文章推荐
- 数据结构(8)--栈的应用之行编辑程序、括号匹配检验、数制转换、hanio塔问题
- 行编辑程序、括号匹配检验
- 重温数据结构-栈的应用:进制转换,括号匹配检测,行编辑,迷宫求解,求表达式的值
- 栈的应用1:数制转换、括号匹配检验和行编辑程序
- 8、数据结构笔记之八栈的应用之括号匹配检验实现
- 栈的顺序实现以及括号匹配判断程序
- 栈的简单应用(数制转换、括号匹配检验、行编辑、迷宫求解)
- 括号匹配的检验程序
- 通过程序实现SMARTFORMS文本编辑模式在WORD和TEXT文本之间转换
- 简单算法——使用栈实现括号匹配检验
- 【数据结构】用栈实现括号匹配的检验
- 数据结构课程设计:括号匹配问题(实现检验匹配并输出不匹配的位置)
- 数据结构(C语言版)page49 3.22括号匹配的检验——用栈来实现
- 用栈实现括号匹配检验(java)
- 10进制转换与括号匹配算法
- 5.基于顺序栈 实现 检测括号匹配程序
- 一个动态的栈实现的括号匹配程序
- 栈的实现,进制数转换以及符号匹配
- 用栈实现括号匹配的检验
- 用栈实现括号匹配的检验