用栈实现括号匹配的检验 修改

合集下载

解决括号匹配问题的思路方法和流程

解决括号匹配问题的思路方法和流程

解决括号匹配问题的思路方法和流程解决括号匹配问题的思路方法和流程引言括号匹配问题是编程中常见的问题,特别是在字符串处理和栈的应用中。

本文介绍了解决括号匹配问题的思路方法和流程,帮助读者更好地理解和解决这一问题。

思路方法和流程1.定义括号匹配问题:括号匹配问题指在一个字符串中判断左右括号是否合法匹配的问题。

2.基本思路:括号匹配问题可以使用栈的数据结构来解决。

我们可以遍历字符串,遇到左括号则入栈,遇到右括号则与栈顶元素比较,如果匹配则栈顶元素出栈,否则说明左右括号不匹配。

3.算法流程:–创建一个空栈,用于存储左括号。

–遍历字符串中的每一个字符。

–如果当前字符是左括号,则将其入栈。

–如果当前字符是右括号,则与栈顶元素比较。

–如果栈为空或栈顶元素与当前字符不匹配,则说明左右括号不匹配,返回 false。

–如果栈顶元素与当前字符匹配,则将栈顶元素出栈。

–遍历完字符串后,如果栈为空,则说明所有左右括号都匹配,返回 true;否则,返回 false。

4.代码示例(使用Python实现):def is_valid_parentheses(s: str) -> bool: stack = []for c in s:if c == "(" or c == "{" or c == "[":(c)else:if not stack:return Falseif c == ")" and stack[-1] != "(":return Falseif c == "}" and stack[-1] != "{":return Falseif c == "]" and stack[-1] != "[":return False()return not stack5.复杂度分析:–时间复杂度:遍历字符串的时间复杂度为 O(n),其中 n 为字符串的长度。

C++实例:括号错误查找的问题

C++实例:括号错误查找的问题

⽤栈来实现 遇到左括号压栈,遇到右括号弹栈。

并匹配,若不匹配出错;处理完后,若栈不位空,表⽰出错。

注意问题: 出栈时没有考虑堆栈下溢的情形:类似"())))"的输⼊必然导致程序崩溃! #include #include #include #include #include using namespace std;// 在VC中c++⽆法⽤ios::nocreate,⽽⽤.h⽆法⽤exit struct bracket { char bk; int row; int line; }A={’{’,0,0},B={’[’,0,0},C={’(’,0,0},a={’}’,0,0},b={’]’,0,0},c={’)’,0,0}; int dis=3; int main() { stack > istack; bracket X; int row=1,line=0; ifstream infile("f.cpp",ios::in/*|ios::nocreate*/);//定义输⼊⽂件流对象,以输⼊⽅式打开磁盘⽂件f.cpp if(! infile) { cout< return 0; //exit(1); } for(int i=0;i<200;i++) { X.bk=infile.get(); line++; if(X.bk==’"’) // 进栈前去掉" " ’ ’的当作字符的括号⾸先//氲絠nfile.ignore(n,’/*’),跳过。

//⽤while(){infile.ignore();line++}, //⼜会在当引号⾥字符奇偶性会可能// 导致"被跳过,没有终⽌条件,考试,⼤提⽰对奇偶判//断显得复杂了 //⽤Continue结束实现 while(infile.get()!=’"’) { continue; line++; } if(X.bk==39) // infile.ignore(20,39); while(infile.get()!=39) { continue; line++; } if(X.bk==’\n’)//字符回车时⾏加1,列归0 { row++; line=0; } if (X.bk==A.bk||X.bk==B.bk||X.bk==C.bk) //读到左括号进栈 { X.row=row; X.line=line; istack.push(X); } //cout< if(X.bk==a.bk||X.bk==b.bk||X.bk==c.bk) //读到右括号出栈 { if(istack.size()==0) //栈为空时当前括号出错 { cout< dis=3; } else { X.row=row; X.line=line; dis=fabs(X.bk-istack.top().bk);// //当括号能匹配时出栈’(’=40, ’)’=42,’[’=91,’]’=93,’{’=123,’}’=125利⽤这个关系 if(dis<=2) // { // istack.pop(); //匹配时出栈 } // else { cout< ().row< cout< istack.pop(); } } } } if(dis<=2&&istack.size()==0) { cout< return 0; } while(istack.size()!=0) { cout< ().line< istack.pop(); } infile.close(); return 0; }。

括号匹配性检测C语言实现

括号匹配性检测C语言实现

括号匹配性检测C语⾔实现#include <stdio.h>#define SIMPLE_KUOHAO "(()1231qeqw)(@#$)"#define COMPLEX_KUOHAO "{(()[asd])}{{{{(((())))}}}}"int main(int argc, const char * argv[]){/*问题描述:假设⼀个算术表达式中可以包含三种括号:圆括号"(" 和")",⽅括号"["和"]"和花括号"{"和"}",且这三种括号可按任意的次序嵌套使⽤(如:…[…{…}…[…]…]…[…]…(…)…)。

编写判别给定表达式中所含括号是否正确配对出现的算法(已知表达式已存⼊数据元素为字符的顺序表中)。

思路分析:检验括号是否匹配的⽅法可以⽤“期待的急迫程度”这个概念来描述。

例如,考虑下列括号序列: [ ( [ ] [ ] ) ] 1 2 3 4 5 6 7 8 当计算机接受了第⼀个括号后,它期待着与其匹配的第⼋个括号的出现,然⽽等来的却是第⼆个括号,此时第⼀个括号“[”只能暂时靠边,⽽迫切等待与第⼆个括号相匹配的、第七个括号“)”的出现,类似地,因等来的是第三个括号“[”,其期待匹配的程度较第⼆个括号更急迫,则第⼆个括号也只能靠边,让位于第三个括号,显然第⼆个括号的期待急迫性⾼于第⼀个括号;在接受了第四个括号之后,第三个括号的期待得到满⾜,消解之后,第⼆个括号的期待匹配就成为当前最急迫的任务了,……依此类推。

很显然,这样的⼀个处理过程和栈的特点⾮常吻合,因此,这个问题可以⽤栈来解决。

解决思路: 1.在算法中设置⼀个栈,每次读⼊⼀个括号; 2.若是右括号,则或者使置于栈顶的最急迫的期待得以消解,此时将栈顶的左括号弹出;或者是不合法的情况,此时将右括号压⼊; 3.若是左括号,则作为⼀个新的更急迫的期待压⼊栈中,⾃然使原有的在栈中的所有未消解的期待的急迫性都降低⼀级; 4.在算法的开始和结束时,栈应该为空。

用栈检验括号匹配c语言

用栈检验括号匹配c语言

用栈检验括号匹配c语言一、背景介绍在程序设计中,括号匹配是一个非常重要的问题。

在C语言中,括号匹配错误往往会导致程序崩溃或者出现不可预料的结果。

因此,在编写C语言代码时,检验括号匹配是必不可少的。

二、栈的概念栈是一种数据结构,它具有后进先出(LIFO)的特点。

通俗地说,就像我们平时吃饭时叠放餐具一样,后放进去的餐具会先被取出来。

三、栈的实现在C语言中,可以使用数组和指针来实现栈。

以下是使用数组实现栈的代码:```#define MAXSIZE 100 // 定义栈的最大长度typedef struct {char data[MAXSIZE]; // 存储数据int top; // 栈顶指针} Stack;void initStack(Stack *s) {s->top = -1;}int isStackEmpty(Stack *s) {return s->top == -1;}int isStackFull(Stack *s) {return s->top == MAXSIZE - 1; }void push(Stack *s, char c) {if (isStackFull(s)) {printf("Stack is full.\n");return;}s->data[++(s->top)] = c;}char pop(Stack *s) {if (isStackEmpty(s)) {printf("Stack is empty.\n");return '\0';}return s->data[(s->top)--];}```四、括号匹配的思路在C语言中,括号包括圆括号"()"、方括号"[]"和花括号"{}"。

检验括号匹配的思路如下:1. 遍历字符串中的每一个字符。

括号匹配问题 栈c语言

括号匹配问题 栈c语言

括号匹配问题栈c语言括号匹配问题是计算机科学领域中十分重要的一个主题,它可以在处理括号匹配问题中发挥作用。

括号匹配问题被广泛应用在计算机科学领域中,比如编译器,语法分析等领域。

要解决括号匹配问题,常用的方法之一就是使用栈数据结构来解决。

栈是一种非常简单而又十分有效的数据结构,它的特点是“后进先出”(LIFO),即一个元素最先被放入栈中,在任何情况下都会最后被取出。

因此,使用栈来解决括号匹配问题,是一种非常有效的方法。

那么,栈的c语言实现是怎样的呢?在c语言中,可以使用结构体来实现栈。

栈的结构体由以下三部分组成:Top指针,MaxSize和Data,其中Top指针表示栈顶元素的位置;MaxSize表示栈的最大存储容量;Data是存储栈内元素的数组。

栈的实现需要定义一些函数,比如push()和pop()函数,用于入栈和出栈的操作;isEmpty()函数,用于判断栈是否为空;isFull()函数,用于判断栈是否已满,以及压栈和出栈元素到栈顶等等。

接下来就是使用栈来解决括号匹配问题了。

首先,要判断输入的字符串中括号是否匹配,可以使用计数法来判断。

例如,如果字符串中出现“(”,就把计数器加1,若出现“)”,就把计数器减1;最后如果计数器为0,则说明字符串中括号是匹配的。

如果字符串的括号是匹配的,则可以使用栈来检验字符串中括号的匹配情况。

从字符串的第一个字符开始遍历,如果当前字符为“(”,则压进栈;如果当前字符为“)”,则出栈一个“(”,表示当前字符与栈中的“(”匹配;如果栈中没有“(”,则说明当前字符串中括号不匹配。

例如,“(()())”这个字符串,经过上述操作,最后栈空,说明括号是完全匹配的。

而“(())()”这个字符串,之后经过操作,栈中会剩一个“(”,说明括号不匹配。

总结以上就是括号匹配问题栈的c语言实现的内容,括号匹配问题是计算机领域中一个常见的问题,栈的c语言实现就是使用结构体定义栈,然后定义一些函数,来实现栈的入栈和出栈操作,最后通过计数法或者栈结构,来判断字符串中括号是否完全匹配。

编写一个括号匹配的检验的程序实习报告

编写一个括号匹配的检验的程序实习报告

编写一个括号匹配的检验的程序实习报告在计算机科学领域,括号匹配是一个常见的问题。

括号匹配指的是在一个字符串中,所有的括号都必须正确地成对出现。

如果所有的括号都能正确地匹配,那么该字符串是合法的;否则,该字符串是非法的。

在本次程序实习中,我设计并实现了一个括号匹配的检验程序。

首先,我对括号匹配的问题进行了深入的研究和分析。

我发现,括号匹配问题可以通过使用栈来解决。

栈是一种遵循后进先出原则的数据结构,在括号匹配问题中非常适用。

我使用了一个栈来存储左括号,并在遍历字符串时进行匹配操作。

接下来,我实现了一个简单而高效的括号匹配检验程序。

该程序可以接收一个字符串作为输入,并判断该字符串中的括号是否匹配。

我使用了编程语言(例如C++或Python)来实现该程序,具体的实现细节如下:1. 首先,我创建了一个空栈,用来存储左括号。

2. 然后,我遍历输入的字符串,逐个检查每个字符。

3. 如果当前字符是左括号(例如'('、'{'或'['),则将其推入栈中。

4. 如果当前字符是右括号(例如')'、'}'或']'),则检查栈是否为空。

如果栈为空,则字符串中的右括号没有相应的左括号,该字符串是非法的;如果栈不为空,则将栈顶的左括号弹出并与当前的右括号进行匹配。

如果两个括号不匹配,那么该字符串是非法的。

5. 最后,当遍历完整个字符串后,检查栈是否为空。

如果栈为空,则说明所有的左括号都有相应的右括号,该字符串是合法的;如果栈不为空,则说明字符串中存在未匹配的左括号,该字符串是非法的。

通过实现这个括号匹配的检验程序,我学到了许多关于栈的知识和算法设计的技巧。

此外,我也加深了对括号匹配问题的理解和掌握。

通过编写和调试这个程序,我提高了自己的编程能力和解决问题的能力。

总的来说,本次括号匹配的检验程序实习让我深入了解了括号匹配问题,并通过实际动手编写代码来解决这个问题。

栈的应用实验报告

栈的应用实验报告

栈的应用实验报告导言:在计算机科学领域中,数据结构是一项非常重要的基础。

栈是一种常用的数据结构,它在算法设计和软件开发中具有广泛的应用。

本实验旨在探索栈的应用,并通过实际操作来加深对栈数据结构的理解。

实验目的:1. 了解栈的定义和基本操作。

2. 掌握栈在实际问题中的应用方法。

3. 培养问题分析和解决的能力。

实验步骤:1. 实现栈的基本操作:压入(push)和弹出(pop)。

2. 针对以下实际问题,设计并实现相应的栈应用。

一、括号匹配问题括号匹配问题是指在一个字符串中,括号的开闭配对是否正确。

例如,"{[()]}"是正确的括号匹配,而"{[(])}"则是错误的括号配对。

通过使用栈,我们可以很方便地解决这个问题。

算法步骤如下:1. 遍历字符串的每个字符。

2. 若字符是左括号,则将其压入栈中。

3. 若字符是右括号,则检查栈是否为空,若为空则配对错误;若非空,则弹出栈顶元素并检查是否与右括号匹配。

4. 遍历结束后,若栈为空,则括号匹配正确,否则匹配错误。

二、函数调用问题在计算机程序中,函数的调用和返回遵循"先进后出"的原则,即后调用的函数先返回。

栈提供了一种便捷的方式来管理函数调用和返回过程。

在实际的编程中,我们可以使用栈来存储函数的局部变量和返回地址等信息。

例如,以下是一个简单的函数调用示例:1. 函数A调用函数B。

2. 函数B在栈中保存局部变量和返回地址。

3. 函数B执行完毕后,从栈中弹出局部变量和返回地址,程序继续执行函数A。

三、逆波兰表达式求值问题逆波兰表达式是一种不使用括号来表示表达式的方法,而是通过运算符放置在操作数之后的方式来表示。

例如,表达式"2 3 +"等价于中缀表达式"2 + 3"。

利用栈,我们可以很方便地对逆波兰表达式进行求值。

算法步骤如下:1. 遍历逆波兰表达式的每个元素。

2. 若元素是操作数,则将其压入栈中。

实验二栈与队列操作实验题目

实验二栈与队列操作实验题目

实验二栈与队列操作实验题目实验二栈与队列操作实验目的:(1)理解栈与队列的结构特征和运算特征,以便在实际问题背景下灵活运用。

(2)了解复杂问题的递归算法设计。

本次实验中,下列实验项目选做一。

1、顺序栈的基本操作[问题描述]设计算法,实现顺序栈的各种基本操作[基本要求](1)初始化栈s。

(2)从键盘输入10个字符以$结束,建立顺序栈。

(3)从键盘输入1个元素,执行入栈操作。

(4)将栈顶元素出栈。

(5)判断栈是否为空。

(6)输出从栈顶到栈底元素。

要求程序通过一个主菜单进行控制,在主菜单界面通过选择菜单项的序号来调用各功能函数。

2、链栈的基本操作[问题描述]设计算法,实现链栈的各种基本操作[基本要求](1)初始化栈s。

(2)从键盘输入10个字符以$结束,建立带头结点的链栈。

(3)从键盘输入1个元素,执行入栈操作。

(4)完成出栈操作。

(5)判断栈是否为空。

(6)输出从栈顶到栈底元素。

(7)输出链栈的长度。

要求程序通过一个主菜单进行控制,在主菜单界面通过选择菜单项的序号来调用各功能函数。

3、循环队列的基本操作[问题描述]设计算法,实现循环顺序队列的建立、入队、出队等操作。

[基本要求](1)从键盘输入10个字符以$结束,建立循环队列,并显示结果。

(2)从键盘输入1个元素,执行入队操作,并显示结果。

(3)将队头元素出队,并显示结果。

(4)要求程序通过一个主菜单进行控制,在主菜单界面通过选择菜单项的序号来调用各功能函数。

4、只用尾指针表示的循环链表队列的综合操作[问题描述]假设以带头结点的的循环链表表示队列,并且只设一个指针指向队尾元素的结点(注意不设头指针),试编写队列初始化、入队、出队函数。

[基本要求及提示](1)首先定义链表结点类型。

(2)编写带头结点的循环链表的初始化函数,只用尾指针表示。

(3)编写入队函数、出队函数。

(4)在主函数中编写菜单(1.初始化;2.入队;3.出队;4.退出),调用上述功能函数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用栈实现括号匹配的检验修改(2008-11-14 19:06:31)标签:c语言编程turbo c2.0环境实现栈括号匹配it 分类:C语言编程例子数据结构C 语言版括号匹配问题是编译程序时经常遇到的问题,用以检测语法是否有错。

本文前些天写的用栈实现括号匹配的检验的代码中,其中用了更少变量的代码二有些错误,使得结果总是match,经过修改,现将正确的代码写出,如下#include<stdlib.h>#include<stdio.h>#define OVERFLOW -1#define OK 1#define ERROR 0#define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define NULL 0typedef char SElemType;typedef int Status;typedef struct{SElemType *base;SElemType *top;int stacksize;}SqStack;Status InitStack(SqStack *S){(*S).base=(SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType));if(!(*S).base) exit(OVERFLOW);(*S).top=(*S).base;(*S).stacksize=STACK_INIT_SIZE;return OK;}Status DestroyStack(SqStack *S){free((*S).base);(*S).base=NULL;(*S).top=NULL;(*S).stacksize=0;return OK;}Status StackEmpty(SqStack *S){if((*S).top==(*S).base) return OK;else return ERROR;}Status Push(SqStack *S,SElemType e){if((*S).top-(*S).base>=(*S).stacksize){(*S).base=(SElemType *)realloc((*S).base,((*S).stacksize+STACKINCREMENT)*sizeof(SElemType));if(!(*S).base) exit(OVERFLOW);(*S).top=(*S).base+(*S).stacksize;(*S).stacksize+=STACKINCREMENT;}*S->top++=e;return OK;}Status Pop(SqStack *S,SElemType *e){if((*S).top==(*S).base) return ERROR;*e=*--S->top;return OK;}main(){SqStack S;SElemType elem;char e,a[20];int i=0;int flag=1;clrscr();if( InitStack(&S))printf("kongjian yijing zhunbei hao!\n");else printf("there is not enough room!\n");printf("input the kuohao (<=20 ge) and press '#' to show the end:\n");do{scanf("%c",&e);a[i]=e;i++;}while(e!='#');i=0;e=a[i];while(e!='#'&&flag){ switch(e){case '(': Push(&S,e); break;case '[': Push(&S,e);break;case '{': Push(&S,e);break;case ')':if(!StackEmpty(&S)){Pop(&S,&e);if(e!='(')flag=0;}else flag=0;break;case ']': if(!StackEmpty(&S)){ Pop(&S,&e);if(e!='[') flag=0;}else flag=0;break;case '}':if(!StackEmpty(&S)){ Pop(&S,&e);if(e!='{') flag=0;}else flag=0;break;}i++;e=a[i];}if(!StackEmpty(&S)) flag=0;if(flag)printf("MATCH!\n");else printf("MIS MA TCH!\n");if(DestroyStack(&S))printf("the stack is already destroyed!\n");else printf("destroy error!\n");printf("press any key to continue!\n");getch();}表达式求值算符优先法 C 语言编程(2008-11-14 19:10:49)标签:if 运算符表达式数据结构c语言turbo c2.0 分类:C语言编程例子数据结构C语言版表达式求值是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子。

设计一个程序,用算符优先法对表达式求值。

以字符序列的形式从终端输入语法正确的、不含变量的整数表达式//用栈实现表达式求值个位数的混合运算#include<stdlib.h>#include<stdio.h>#define OVERFLOW -1#define OK 1#define TRUE 1#define FALSE 0#define ERROR 0#define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define NULL 0typedef char SElemType;typedef int Status;typedef struct{SElemType *top;SElemType *base;int stacksize;}SqStack;Status InitStack(SqStack *S){(*S).base=(SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType)); //开辟空间if(!(*S).base) exit(OVERFLOW); //存储分配失败(*S).top=(*S).base;(*S).stacksize=STACK_INIT_SIZE;return OK;}Status DestroyStack(SqStack *S){free((*S).base);(*S).base=NULL;(*S).top=NULL;(*S).stacksize=0;return OK;}Status StackEmpty(SqStack *S){if((*S).top==(*S).base) return OK;else return ERROR;}Status Push(SqStack *S,SElemType e) //插入为新的栈顶元素{if((*S).top-(*S).base>=(*S).stacksize) //栈满追加存储空间{(*S).base=(SElemType *)realloc((*S).base,((*S).stacksize+STACKINCREMENT)*sizeof(SElemType));if(!(*S).base) exit(OVERFLOW); //存储分配失败(*S).top=(*S).base+(*S).stacksize;(*S).stacksize+=STACKINCREMENT;}*S->top++=e;return OK;}Status Pop(SqStack *S,SElemType *e){if((*S).top==(*S).base) return ERROR;*e=*--S->top;return OK;}int Transfor(char c){ //返回字符c对应优先关系表中的行列号int k;switch(c){ case '+':k=0;break;case '-':k=1;break;case '*':k=2;break;case '/':k=3;break;case '(':k=4;break;case ')':k=5;break;case '#':k=6;break;}return k;}char Precede(char c1,char c2){ //判断c1与c2的位序关系,优先的返回'=',非'<',其他还有'='和' ' int i,j;char a[7][7]={ {'>','>','<','<','<','>','>'},{'>','>','<','<','<','>','>'},{'>','>','>','>','<','>','>'},{'>','>','>','>','<','>','>'},{'<','<','<','<','<','=',''},{'>','>','>','>','','>','>'},{'<','<','<','<','<','','='}};i=Transfor(c1);j=Transfor(c2);return(a[i][j]);}Status In(char c,char OP[]){ //判断字符c 是否算符,是ok非errorint i;for(i=0;i<=6;i++)if(c==OP[i]) return TRUE;return FALSE; //全判定完还没有则返回false}char Operate(char a,SElemType theta,char b){ //数值计算int z;switch(theta){ case '+':z=a+b;break;case '-':z=b-a;break; //被减数先进栈,故交换所取值case '*':z=a*b;break;case '/':z=b/a;break;}return z;}SElemType GetTop(SqStack *S){ //若栈不空,用e 返回栈顶元素和OK,否则ERRORSElemType e;if((*S).top==(*S).base) return ERROR;e=*((*S).top-1);return e;}main(){ SElemType c,elem; //运算符SqStack OPTR,OPND; //运算符栈和运算数栈int a,b,thera; //运算数int optag=FALSE;char OP[7]={'+','-','*','/','(',')','#'};OPTR.top=NULL;OPTR.base=NULL;OPND.top=NULL;OPND.base=NULL; clrscr();//初始化运算符栈if( InitStack(&OPTR))printf("kongjian OPTR yijing zhunbei hao!\n");else printf("there is not enough room for OPTR!\n");//初始化运算数栈Push(&OPTR,'#');if(InitStack(&OPND))printf("kongjian OPND yijing zhunbei hao!\n");else printf("there is not enough room for OPND!\n");printf("input the expression_r:\n");scanf("%c",&c);elem=GetTop(&OPND);while(c!='#'||GetTop(&OPTR)!='#'){ if(!In(c,OP)) //不是运算符则进操作数栈{ if(optag){Pop(&OPND,&elem);elem=elem*10+c-'0';Push(&OPND,c);}else Push(&OPND,c-'0');optag=TRUE;scanf("%c",&c);} //不是运算符则进栈else{if(!optag&&c=='-')Push(&OPND,0);switch(Precede(GetTop(&OPTR),c)){case '<': //栈顶元素优先权低Push(&OPTR,c);scanf("%c",&c);optag=FALSE;break;case '=': //脱括号并接受下一个字符Pop(&OPTR,&elem);scanf("%c",&c);optag=FALSE;break;case '>': //退栈并将运算结果入栈Pop(&OPTR,&elem);thera=elem;Pop(&OPND,&elem);a=elem;Pop(&OPND,&elem);b=elem;Push(&OPND,Operate(a,thera,b));break;}//switch}}elem=GetTop(&OPND);printf("jisuan jiguo wei : %d\n",elem);if(DestroyStack(&OPTR))printf("stack optr (yunsuanfuzhan) destroyed!\n");else printf("not destroyed!\n");if(DestroyStack(&OPND))printf("stack opnd (caozuoshuzhan) destroyed!\n");else printf("not destroyed!\n");printf("press any key to continue:\n");getch();}实验六:实现串的基本操作(2学时)用堆分配存储表示实现Hstring串类型的最小操作子集的基础上,实现串抽象数据类型的其余基本操作(不使用C语言本身提供的串函数)。

相关文档
最新文档