200高分求解C数据结构的几道题!!! 实在是无奈,望高手相救.

1. 给出二叉树的前序中序后序遍历结果.
○A
○B ○C
○D ○E○F ○G
○H ○I
○J
2. 给出该图邻接表表示方法.
○A
6 5
○B 1 ○D
5 5
3 ○C 2
6 4
○E 6 ○F
3. 给定结点权值,{30,2,81,22,37,15,62,}建一颗哈弗曼树.

4. 写出对{47,28,32,15,94,33,14,16,}进行直指插入排序的状态变化过程.

5. 已知一个单链表中的各结点的值是从小到大有序排列,设计一个算法,插入一个值为X的结点,使此链表有序.
题目也就是这些我抄下来的.一道题都看不懂.应该怎么答也不知道.所以麻烦大家详细一点.要可以交上去的啊.
如果文字不好画.可以做个图片把地址告诉我就可以了..谢谢各位高手搭救

1. ABDECFHIJG 前序
DBEAHFIJCG 中序
DEBHJIFGCA 后序
2. a b c d e f

a 0 6 1 5 0 0

b 0 5 0 3 0

c 0 5 6 4

d 0 3 2

e 0 6

f 0
矩阵的下方取对称,这个可以会= =
249

168 81

101 67

62 39 30 37

22 17
2 15
楼主能把这个看成树的形状吧~~ 是在是很难画啊,我的极限了- -
4.
47
28 47
28 32 47
15 28 32 47
15 28 32 47 94
15 28 32 33 47 94
14 15 28 32 33 47 94
14 15 16 28 32 33 47 94

5.
这个是有头结点的链表,按楼主的知识水平应该要的是这个,如果不是请在问题补充里说,我改
struct link
{
int data;
struct *next;
};
暂时用这个结构体吧,跟你的有什么不同,能改的自己就改一下,不会的话就提出来吧
void insert(struct link *head,struct link *ist)
{
struct link *p,*pre,*t;
p = head -> next;

while((p != NULL) && (p->data < ist->data))
{
pre = p;
p = p->next;
}
if(p == NULL)
{
pre -> next = ins;
ins -> next = NULL;
}
else
{
ins -> next = pre -> next;
pre -> next = pre;
}
}
就这些了 累死我了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-06-30
1 ABDECFHIJG 前序
DBEAHFIJCG 中序
DEBHJIFGCA 后序
2 考试题出的应该有向图吧? 因为很简单,而且还不确定就不给答案了,自己看下教材就会了
3 楼上的应该错了吧
249

101 148

39 62 67 81

22 17 30 37

2 15
4.47 28 32 15 94 33 14 16
28 47 32 15 94 33 14 16
28 32 47 15 94 33 14 16
15 28 32 47 94,33,14,16
15 28 32 47 94 33,14,16
15 28 32 33 47 94 14,16
14 15 28 32 33 47 94 16
14 15 16 28 32 33 47 94
5.void LinkedListInsert(LinkedList L, int x) //
{
LinkedList p,s;
p=L;
while(p!=NULL)
{
if(p->next->data>x)
{
s=(LinkedList)malloc(sizeof(Node));
s->data=x;
s->next=p->next;
p->next=s;
break;
}
else
p=p->next;
}
}
第2个回答  2009-06-28
1. ABDECFHIJG 前序
DBEAHFIJCG 中序
DEBHJIFGCA 后序

2.每个顶点用头结点表示,邻接的点用表结点表示,每个邻接的点序号由大到小连接在一起。举例0表示a,1表示b,2表示c....0[A|]->[3|]->[2|]->[1|^]这个就是顶点a的表示法,全部顶点都写出来就是他的邻接表的表示

3.4我会一点,说不好,你找别人帮忙吧。

5.这个代码不能插入到表尾的。你需要的话自己改改吧
#include<stdio.h>
#include<stdlib.h>

typedef struct Node{
struct Node *next;
int data;
}Node,*LinkedList;

LinkedList LinkedListInit()
{
LinkedList p;
p=(LinkedList)malloc(sizeof(Node));
return p;
}

LinkedList LinkedListCreat(LinkedList L)
{
int x=0;
LinkedList p,s;

p=L;
printf("input the numbers, end by -1\n");
scanf("%d",&x);

while(x!=-1)
{
s=(LinkedList)malloc(sizeof(Node));
s->data=x;
p->next=s;
p=s;
scanf("%d",&x);
}

p->next=NULL;
return L;
}

void LinkedListTrave(LinkedList p)
{
LinkedList L1;
L1=p->next;
while(L1!=NULL)
{
printf("%d ",L1->data);
L1=L1->next;
}
printf("\n");
}

void LinkedListInsert(LinkedList L, int x) // x ÊÇÒª²åÈëµÄÊý
{
LinkedList p,s;
p=L;
while(p!=NULL)
{
if(p->next->data>x)
{
s=(LinkedList)malloc(sizeof(Node));
s->data=x;
s->next=p->next;
p->next=s;
break;
}
else
p=p->next;
}
}

void main()
{
LinkedList L;
int x;
L=LinkedListInit();
L=LinkedListCreat(L);

printf("LinkedListTrave:\n");
LinkedListTrave(L);

printf("input the number\n");
scanf("%d",&x);

LinkedListInsert(L,x);

printf("LinkedListTrave:\n");
LinkedListTrave(L);

}
第3个回答  2009-06-28
我补充3
3 每次找两个权值最小的点组合成一个根节点,循环做直到全部点和成为一个树。
第4个回答  2009-06-28
1题答案:
中序:DBEAHFIJCG
后序:DEBHJIFGCA
相似回答