《数据结构题集》参考答案 栈与队列【DOC精选】.docVIP

  • 1
  • 0
  • 约5.7千字
  • 约 7页
  • 2017-02-16 发布于江苏
  • 举报

《数据结构题集》参考答案 栈与队列【DOC精选】.doc

第三章 栈与队列 ◆3.19④ 假设一个算术表达式中可以包含三种括号:圆括号( 和 ),方括号[和]和花括号{和},且这三种括号可按任意的 次序嵌套使用(如:…[…{…}…[…]…]…[…]…(…)…)。编写判别给定表达 式中所含括号是否正确配对出现的算法(已知表达式已存入数据元素 为字符的顺序表中)。 实现下列函数: Status MatchCheck(SqList exp); /* 顺序表exp表示表达式; */ /* 若exp中的括号配对,则返回TRUE,否则返回FALSE */ 顺序表类型定义如下: typedef struct { ElemType *elem; int length; int listsize; } SqList; // 顺序表 Stack是一个已实现的栈。 可使用的相关类型和函数: typedef char SElemType; // 栈Stack的元素类型 Status InitStack(Stack s); Status Push(Stack s, SElemType e); Status Pop(Stack s, SElemType e); Status StackEmpty(Stack s); Status GetTop(Stack s, SElemType e); Status MatchCheck(SqList exp) /* 顺序表exp表示表达式; */ /* 若exp中的括号配对,则返回TRUE,否则返回FALSE */ { SqList s; InitStack(s); int i=0,top=-1; bool t=1; while (i=(exp.length-1)t) { if (exp.elem[i]==(||exp.elem[i]==[||exp.elem[i]=={) { top++; s.elem[top]=exp.elem[i]; } if (exp.elem[i]==)) { if (s.elem[top]==() { top--; } else t=0; } if (exp.elem[i]==]) { if (s.elem[top]==[) { top--; } else t=0; } if (exp.elem[i]==}) { if (s.elem[top]=={) { top--; } else t=0; } i++; }//while if (top=0) t=0; return t; } 3.20③ 假设以二维数组g(1..m,1..n)表示一个图像 区域,g[i,j]表示该区域中点(i,j)所具颜色,其值 为从0到k的整数。编写算法置换点(i0,j0)所在区域 的颜色。约定和(i0,j0)同色的上、下、左、右的邻 接点为同色区域的点。 实现下列函数: void ChangeColor(GTYPE g, int m, int n, char c, int i0, int j0); /* 在g[1..m][1..n]中,将元素g[i0][j0] */ /* 所在的同色区域的颜色置换为颜色c */ 表示图像区域的类型定义如下: typedef char GTYPE[m+1][n+1]; Stack是一个已实现的栈。 可使用的相关类型和函数: typedef int SElemType; // 栈Stack的元素类型 Status StackInit(Stack s, int initsize); Status Push(Stack s, SElemType e); Status Pop(Stack s, SElemType e); Status StackEmpty(Stack s); Status GetT

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档