1,创建二叉链表
// 根据二叉树的顺序存储,创建并返回二叉链表
BiTree create(char s[]){
BiTree p [MAXSIZE+1];
int i=1;
p[1] = (BiTree ) malloc (sizeof(BiTree));
p[1]->data = s[1];
p[1]->lchild = NULL;
p[1]->rchild =NULL;
i++;
int len=0;
for(int i=1;s[i]!='\0';i++)
len++;
while(i<=len)
{
p[i] = (BiTree ) malloc (sizeof(BiTree));
p[i]->lchild = NULL;
p[i]->rchild = NULL;
if(s[i] !='#')
{
if( i % 2==0)
p[i/2]->lchild = p[i];
else
p[i/2]->rchild = p[i];
}
p[i]->data = s[i];
i++;
}
return p[1];
}
2,无向图的创建-邻接矩阵表示法
输入示例
4 3
A B C D
A B
A C
C D
void create(AMGraph &g){
scanf("%d %d\t",&g.vexnum,&g.arcnum);
for(int i=0;i<g.vexnum;i++){
for(int j=0;j<g.vexnum;j++)
g.arcs[i][j] = 0; ///赋值0
}
for(int i=0;i<g.vexnum;i++){
scanf("%c\t",&g.vexs[i]);
}
for(int k=0;k<g.arcnum;k++){
char v1,v2;
int t = g.arcnum;
while(--t>1)
{
scanf("%c %c",&v1,&v2); //A,B
int i,j;
for(int l=0;l<g.vexnum;l++)
{
if(g.vexs[l] == v1)
i = l;
if(g.vexs[l] == v2)
j = l;
}
g.arcs[i][j] = g.arcs[j][i] = 1;
getchar();
}
}
}
3,无向图创建-邻接表表示法
输入示例
4 3
A B C D
A B
A C
C D
void create(ALGraph &g){
scanf("%d %d\t",&g.vexnum,&g.arcnum);
for(int i=0;i<g.vexnum;i++)
{
scanf("%c\t",&g.vertices[i].data);
g.vertices[i].firstarc = NULL;
}
for(int k=0;k<g.arcnum;k++){
char v1,v2;
int i ,j;
if (k != g.arcnum-1)
scanf("%c %c\t",&v1,&v2);
else
scanf("%c %c",&v1,&v2);
for(int l=0;l<g.vexnum;l++)
{
if(g.vertices[l].data == v1)
i = l;
if(g.vertices[l].data == v2)
j = l;
}
ArcNode *p1 = new ArcNode;
p1->adjvex = j;
p1->nextarc = g.vertices[i].firstarc;
g.vertices[i].firstarc = p1;
ArcNode *p2 = new ArcNode;
p2->adjvex = i;
p2->nextarc = g.vertices[j].firstarc;
g.vertices[j].firstarc = p2;
}
}