云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 数据结构-习题集答案-(C语言版严蔚敏)

数据结构-习题集答案-(C语言版严蔚敏)

  • 62 次阅读
  • 3 次下载
  • 2025/5/1 15:12:25

为同色区域的点。

解:

#include #include

typedef struct{

int x; int y;

}PosType; typedef struct{

#include \

#define M 8 #define N 8

ElemType g[M][N];

void CreateGDS(ElemType g[M][N]); void ShowGraphArray(ElemType g[M][N]);

void RegionFilling(ElemType g[M][N],PosType CurPos,int NewColor);

int main() { }

void RegionFilling(ElemType g[M][N],PosType CurPos,int FillColor) {

Stack s;

PosType StartPos; StartPos.x=5; StartPos.y=5; int FillColor=6;

RegionFilling(g,StartPos,FillColor); cout<

}ElemType;

}

void CreateGDS(ElemType g[M][N]) {

int i,j; for(i=0;i

for(j=0;j

g[i][j].seat.x=i; g[i][j].seat.y=j; g[i][j].Visited=0; g[i][j].Color=0;

}

if(CurPos.x

Push(s,g[CurPos.x][CurPos.y-1]); Push(s,g[CurPos.x][CurPos.y+1]); !g[CurPos.x][CurPos.y-1].Visited && g[CurPos.x][CurPos.y-1].Color==OldColor if(CurPos.y>0 &&

Push(s,g[CurPos.x-1][CurPos.y]); !g[CurPos.x][CurPos.y+1].Visited && g[CurPos.x][CurPos.y+1].Color==OldColor if(CurPos.y

Push(s,g[CurPos.x+1][CurPos.y]); !g[CurPos.x-1][CurPos.y].Visited && g[CurPos.x-1][CurPos.y].Color==OldColor if(CurPos.x>0 &&

!g[CurPos.x+1][CurPos.y].Visited && g[CurPos.x+1][CurPos.y].Color==OldColor

InitStack(s); ElemType e;

int OldColor=g[CurPos.x][CurPos.y].Color;

Push(s,g[CurPos.x][CurPos.y]); while(!StackEmpty(s)){

Pop(s,e); CurPos=e.seat;

g[CurPos.x][CurPos.y].Color=FillColor; g[CurPos.x][CurPos.y].Visited=1;

}

void ShowGraphArray(ElemType g[M][N]) { }

3.21 假设表达式有单字母变量和双目四则运算符构成。试写一个算法,将一个通常书写形式且书写正确的表达式转换为逆波兰表达式。

解:

// 输入的表达式串必须为#...#格式

void InversePolandExpression(char Buffer[]) {

Push(s,Buffer[i]); i++;

while(Buffer[i]!='#'){

if(!IsOperator(Buffer[i])){ // 是操作数 } else{

// 是操作符 GetTop(s,e);

if(Prior(e,Buffer[i])){// 当栈顶优先权高于当前序列时,退栈 } else{

Pop(s,e); Buffer[j]=e; j++;

Buffer[j]=Buffer[i]; i++; j++;

Stack s; InitStack(s); int i=0,j=0; ElemType e; int i,j;

for(i=0;i

for(j=0;j

cout<

for(j=2;j<4;j++)

g[i][j].Color=3;

for(i=5;i

for(j=3;j<6;j++)

g[i][j].Color=3;

}

Status IsOpertor(char c) { }

Status Prior(char c1,char c2) { }

3.22 如题3.21的假设条件,试写一个算法,对以逆波兰式表示的表达式求值。

解:

char CalVal_InverPoland(char Buffer[]) {

Stack Opnd; InitStack(Opnd); int i=0; char c;

char ch[]=\int i=0,j=0;

while(ch[i] && ch[i]!=c1) i++;

if(i==2) i--; // 加和减可认为是同级别的运算符 if(i==4) i--; // 乘和除可认为是同级别的运算符 while(ch[j] && ch[j]!=c2) j++; if(j==2) j--; if(j==4) j--;

if(i>=j) return TRUE; else return FALSE; char *p=\while(*p){ }

return FALSE;

if(*p==c)

return TRUE; p++; }

while(!StackEmpty(s)){ }

Pop(s,e); Buffer[j]=e; j++; }

}

Push(s,Buffer[i]); i++;

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

为同色区域的点。 解: #include #include typedef struct{ int x; int y; }PosType; typedef struct{ #include \ #define M 8 #define N 8 ElemType g[M][N]; void CreateGDS(ElemType g[M][N]); void ShowGraphArray(ElemType g[M][N]); void RegionFilling(ElemType g[M][N],PosType CurPos,int NewColor);

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com