c语言数据结构

Python011

c语言数据结构,第1张

#include <stdlib.h>

#include <iostream>

#define OK 1

#define MVNum 100

typedef int Status

typedef char VerTexType

typedef int ArcType

struct closedgestruct

{

VerTexType adjvex//最小边的顶点ArcType

ArcType lowcost//最小边的权值

}closedge[MVNum]

Status Min()

{

int x,N,min=closedge[1].lowcost

for(x=1x<=MVNumx++)

{

if(min>closedge[x].lowcost)

min=closedge[x].lowcost//找closedge数组中权值最小的那组

N=x//N保存权值最小的那组的下标

}

std::cout<<N//输出最小权值对应的那组数组的下标

return OK

}

这个程序是实现将一个二叉树安装左序优先的顺序存放在一个顺序数组中

void level(const tree *tp){ //tp指针给定一个二叉树根节点

Node *queue[8]//保存各节点指针的顺序数组, 程序中默认节点数小于8

int front,rear//当前处理节点位置和当前保存节点位置

front=rear=0//当前queue中没有待处理节点

queue[rear++]=*tp//根节点指针存放到queue[0]位置

while(front<rear){ //如果数组中仍有待处理节点则继续循环,结束循环:二叉树节点均处理完毕

printf("%c",queue[front]->data)//输出正在处理的节点数据内容

if(queue[front]->lchild ) //如果当前节点有左侧子节点

queue[rear++]=queue[front]->lchild//将有效左侧子节点存入数组

if(queue[front]->rchild ) //如果当前节点有右侧子节点

queue[rear++]=queue[front]->rchild//将这个有效的右侧子节点存入数组

front++//处理下一个待处理节点(肯定是前面节点的子节点,左侧子节点存放在前)

}

}

分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

1、具体要求:以下算法是一个迷宫的算法,在走迷宫过程中用到了队列,请理解以下算法,并将算法的实现过程、子函数的作用以及测试数据写在报告纸上。

#include"stdio.h"

#include"stdlib.h"

#define m 4

#define n 4

struct stype

{int x,y,pre

}sq[400]

int mg[m+2][n+2]

int zx[9],zy[9]

void printlj(int rear)

{int i

i=rear

do

{printf("(%d,%d)",sq[i].x,sq[i].y)

i=sq[i].pre

}while(i!=0)

}

void mglj()

{int i,j,x,y,front,rear,find,v

sq[1].x=1sq[1].y=1sq[1].pre=0find=0

front=rear=1mg[1][1]=-1

while(front<=rear&&!find)

{x=sq[front].x

y=sq[front].y

for(v=1v<=8v++)

{i=x+zx[v]

j=y+zy[v]

if(mg[i][j]==0)

{rear++

sq[rear].x=i

sq[rear].y=j

sq[rear].pre=front

mg[i][j]=-1

}

if(i==m&&j==n)

{printlj(rear)

find=1

}

}

front++

}

if(!find) printf("no way\n")

}

void main()

{int i,j

for(i=1i<=mi++)

for(j=1j<=nj++)

scanf("%d",&mg[i][j])

for(i=0i<=m+1i++)

{mg[i][0]=1mg[i][n+1]=1

}

for(j=0i<=n+1i++)

{mg[0][j]=1mg[m+1][j]=1

}

zx[1]=-1zx[2]=-1zx[3]=0zx[4]=1

zx[5]=1zx[6]=1zx[7]=0zx[8]=-1

zy[1]=0zy[2]=1zy[3]=1zy[4]=1

zy[5]=0zy[6]=-1zy[7]=-1zy[8]=-1

mglj()

}

2、具体要求:背包问题是算法中一个经典的问题,请查找相关资料对它进行描述,并且利用C语言实现该算法。附代码。

解析:

第一个问题是个迷宫问题.很多地方都有答案吧

思路就是往前后左右四个方格前进,进到新的方格中的时候再前后左右...这样递归下去.如果遇到不可走的路,就把它从队列里删除.直到找到出口为止.

以前写过具体的算法.但是找不到...只能给你点提示啦