内容发布更新时间 : 2024/11/20 13:24:12星期一 下面是文章的全部内容请认真阅读。
};
}
// 链栈得数据结构及方法得定义 typedef struct NodeType{
ElemType data; NodeType *next;
}NodeType,*LinkType; typedef struct{
LinkType top; int size;
}Stack;
void InitStack(Stack &s) { }
void DestroyStack(Stack &s) { }
void ClearStack(Stack &s) { }
int StackLength(Stack s) { }
Status StackEmpty(Stack s) {
if(s、size==0) return TRUE; else return FALSE; return s、size; LinkType p; while(s、top){ }
p=s、top; s、top=p->next; delete p; s、size--; LinkType p; while(s、top){ }
p=s、top; s、top=p->next; delete p; s、size--; s、top=NULL; s、size=0;
}
Status GetTop(Stack s,ElemType &e) { }
Status Push(Stack &s,ElemType e) { }
Status Pop(Stack &s,ElemType &e) { }
// 从栈顶到栈底用Visit()函数遍历栈中每个数据元素
void StackTraverse(Stack s,Status (*Visit)(ElemType e))嵘嗩浔嵐疟噜领。 { }
3、16 假设如题3、1所属火车调度站得入口处有n节硬席或软席车厢(分别以H与S表示)等待调度,试编写算法,输出对这n节车厢进行调度得操作(即入栈或出栈操作)序列,以使所有得软席车厢都被调整到硬席车厢之前。巩堊裣龅韫侶鲣。 解: int main()
LinkType p; p=s、top;
while(p) Visit(p->data); LinkType p; if(s、top){ }
return OK;
e=s、top->data; p=s、top; s、top=p->next; delete p; s、size--; LinkType p; p=new NodeType; if(!p) exit(OVERFLOW); p->next=s、top; s、top=p; p->data=e; s、size++; return OK;
if(!s、top) return ERROR; else{ }
e=s、top->data; return OK;
{ }
3、17 试写一个算法,识别一次读入得一个以@为结束符得字符序列就是否为形如‘序列1&序列2’模式得字符序列。其中序列1与序列2中都不含字符‘&’,且序列2就是序列1得逆序列。例如,‘a+b&b+a’就是属该模式得字符序列,而‘1+3&3-1’则不就是。聩颛绪療籬环矶。 解:
BOOL Symmetry(char a[]) {
int i=0; Stack s; InitStack(s); ElemType x;
while(a[i]!='&' && a[i]){ }
if(a[i]) return FALSE; i++; while(a[i]){
Pop(s,x); if(x!=a[i]){
DestroyStack(s); return FALSE; Push(s,a[i]); i++; Stack s; char Buffer[80]; int i=0,j=0; InitStack(s);
cout<<\请输入硬席(H)与软席车厢(S)序列:\cin>>Buffer; cout< while(Buffer[j]){ } cout< Pop(s,Buffer[j]); j++; if(Buffer[i]=='S'){ } else Push(s,Buffer[i]); i++; Buffer[j]=Buffer[i]; j++; } } } i++; return TRUE; 3、18 试写一个判别表达式中开、闭括号就是否配对出现得算法。 解: BOOL BracketCorrespondency(char a[]) { } 3、20 假设以二维数组g(1…m, 1…n)表示一个图像区域,g[i,j]表示该区域中点(i,j)所具颜色,其值为从0到k得整数。编写算法置换点(i0,j0)所在区域得颜色。约定与(i0,j0)同色得上、下、左、右得邻接点为同色区域得点。鲛贺师脓睜锋镓。 解: #include int i=0; Stack s; InitStack(s); ElemType x; while(a[i]){ } if(s、size!=0) return FALSE; return TRUE; switch(a[i]){ case '(': } i++; Push(s,a[i]); break; Push(s,a[i]); break; GetTop(s,x); if(x=='(') break; GetTop(s,x); if(x=='[') Pop(s,x); else return FALSE; break; break; Pop(s,x); else return FALSE; case '[': case ')': case ']': default: #include int x; int y; }PosType; typedef struct{ int Color; int Visited; PosType seat; }ElemType; #include \、h\#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; 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; if(CurPos、x !g[CurPos、x+1][CurPos、y]、Visited && CreateGDS(g); ShowGraphArray(g); PosType StartPos; StartPos、x=5; StartPos、y=5; int FillColor=6;