c++를 C언어로 바꿔주실분 ㅠㅠ

  • LV 1 zenojm
  • 비추천 0
  • 추천 2
  • 조회 3215
  • 2013.11.04 18:41
  • 문서주소 - /bbs/board.php?bo_table=qna&wr_id=31491
아무리 코드를 짜도 안되네요ㅠㅠ
부탁드립니다..ㅠㅠ


#include<iostream>
#include<fstream>
#include<iterator>
#include<vector>
using namespace std;
#define LEFT 1
#define RIGHT 2
template<class T>
class Queue{
private:
 vector<T> v;
public:
 vector<T>&getVec(){return v;};
 void enqueue(const T & val){v.push_back(val);};
 T dequeue(){
  T temp=v.front();
  v.erase(v.begin());
  return temp;
 };
 T peek()const{return v.front();};
};
typedef struct treeNode{
 char data;
 int count;
 struct treeNode* left;
 struct treeNode* right;
}treeNode;
treeNode* createNode(const char ch)
{
 treeNode *newNode = new treeNode;
 newNode->data=ch;
 newNode->count=0;
 newNode->left=NULL;
 newNode->right=NULL;
 return newNode;
}
void level_order(treeNode *ptr)
{
 Queue<treeNode*> q;
 if(!ptr) return;
 q.enqueue(ptr);
 while(!q.getVec().empty()){
  ptr = q.dequeue();
  cout<<ptr->data<<"\t";
  if(ptr->left)
  q.enqueue(ptr->left);
  if(ptr->right)
  q.enqueue(ptr->right);
 }
}
void makeTree(Queue<char>& chQ, vector<treeNode*>& v)
{
 treeNode *c, *p;
 char ch;
 while(chQ.getVec().size()!=1){
  ch=chQ.dequeue();
  switch(ch)
  {
  case '(':
  v.push_back(createNode(chQ.dequeue()));
  break;
  case ',':
  if(chQ.peek()!='(') chQ.dequeue();
  (*v.rbegin())->count++;
  break;
  case ')':
  c=*v.rbegin();
  v.pop_back();
  p=*v.rbegin();
  if(p->count==LEFT){
    p->left=c;
  }else if(p->count==RIGHT){
    p->right=c;
  }else{
    cout<<"오류"<<endl;
  }
  break;
  default:
  break;
  }
 }
}
int main()
{
 Queue<char> chQ;
 vector<treeNode*> v;
 ifstream ifd("inputTree.txt");
 copy(istream_iterator<char>(ifd), istream_iterator<char>(), back_inserter(chQ.getVec()));
 makeTree(chQ, v);
 level_order(*v.begin());
 return 0;
}

추천 2 비추천 0

Print