码迷,mamicode.com
首页 > 其他好文 > 详细

作业保存

时间:2016-03-13 19:57:57      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<time.h>
#include<windows.h>
using namespace std;
const int initial_lize=10000;
const int adding_size=2*initial_lize;
template<class T>
struct Queue{
    T * base;
    T * Qhead,*Qbegin,*Qend,*Qfront,*Qtail;
    int front_pos,tail_pos;
    int now_size,whole_size;
    Queue(){
        base=(T *)malloc(sizeof(T)*initial_lize);
        Qhead=base;
        Qbegin=base;Qend=base+(initial_lize-1);
        Qfront=Qtail=base+1;
        front_pos=tail_pos=1;
        now_size=1;
        whole_size=initial_lize;
    }
    bool Empty(){
        if(Qfront==Qtail)   return true;
        else                return false;
    }
    void push(const T x){
        now_size++;
        if(now_size<whole_size){
            *Qtail=x;
            Qtail++;
            tail_pos++;
        }
        else{
            base=(T *)realloc(base,(sizeof(T))*whole_size*2);//别忘了类型转换
            whole_size*=2;
            Qhead=base;Qend=base+(whole_size-1);
            Qfront=base+front_pos;Qtail=base+tail_pos;
            *Qtail=x;Qtail++;tail_pos++;
        }
    }
    T Top(){
        if(!Empty())    return (*Qfront);
        else{
            cerr<<"Queue is empty! can not return any elements"<<endl;
        }
    }
    void pop(){
        if(!Empty()){
            Qfront++;
            front_pos++;
        }
        else{
            cerr<<"Queue is empty! can not pop any elements"<<endl;
        }
    }
    void delete_Queue(){
        free(base);
    }
};
const int m_size=100;
int matrix[m_size][m_size];
struct node{
    int x,int y;
};
const int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
bool check(int x,int y){
    if(x<0||x>=m_size||y<0||y>=m_size)  return false;
    else                                return true;
}
int bfs(int sx,int sy,int dx,int dy){
    Queue<node> que;
    que.push((node){sx,sy});
    while(!que.Empty()){
        node k=que.Top();
        que.pop();
        for(int i=0;i<4;i++){
            int x=k.x+dir[i][0];
            int y=k.y+dir[i][1];
            if(check(x,y)) {if(x==dx&&y==dy){print();break;} que.push((node){x,y});}
        }
    }
    delete_Queue();
}
bool general_matrix(){}
int main(){
//队列的测试
//    Queue<int> que;
//    int temp=0;
//    que.Top();
//    que.pop();
//    for(int i=0;i<10;i++){
//        que.push(i);
//    }
//    for(int i=0;i<10;i++){
//        temp=que.Top();
//        que.pop();
//        cout<<temp<<endl;
//    }
//  que.delet_Queue();
    srand(time(NULL));
    general_matrix();
    bfs();
    return 0;
}

  

作业保存

标签:

原文地址:http://www.cnblogs.com/linkzijun/p/5272655.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!