/*
a00
|__b01
| |__d02
| | |__f03
| | |__g13
| |__e12
|__c11
*/
#include <iostream>
#include <stdlib.h>
#define MAX 10
using namespace std;
class Table;
class Node;
class Node
{
friend class Table;
private:
char sName;
int iNextnum;
Node *pNext[MAX];
int iPrize;
int iX;
int iY;
public:
Node()
{
cout<<"sName:";
cin>>sName;
cout<<"iNextnum:";
cin>>iNextnum;
cout<<'/n';
}
};
class Table
{
private:
Node *pFirst;
void createtable(Node *);
public:
void print(Node *);
void Table::print0(Node *);
Node *First()
{
return pFirst;
}
Table()
{
pFirst = new Node;
pFirst->iX = 0;
pFirst->iY = 0;
createtable(pFirst);
}
};
void Table::createtable(Node *p)
{
int i;
if(p->iNextnum != 0)
{
for(i = 0; i < p->iNextnum; i++)
{
p->pNext[i] = new Node;
(p->pNext[i])->iX = i;
(p->pNext[i])->iY = p->iY + 1;
createtable(p->pNext[i]);
}
for(i = p->iNextnum; i < MAX; i++)
{
p->pNext[i] = NULL;
}
}
else
{
for(i = 0; i < MAX; i++)
{
p->pNext[i] = NULL;
}
}
}
void Table::print0(Node *p)
{
}
void Table::print(Node *p)
{
int i;
cout<<p->sName<<'('<<p->iX<<','<<p->iY<<')'<<',';
if(p->iNextnum != 0)
{
for(i = 0; i < p->iNextnum; i++)
{
print(p->pNext[i]);
}
}
else
{
}
}
int main(int argc, char *argv[])
{
Table table;
table.print(table.First());
table.print0(table.First());
system("PAUSE");
return 0;
}