主题:急求答案啊!一共五道题,有一道答案就好.
yeyaore
[专家分:0] 发布于 2007-06-28 17:43:00
1、 一元多项式计算
[基本要求]
1 按照升幂顺序输入多项式A和B
2 多项式A和B相加
3 多项式A和B相减
[实现提示]
用带表头结点的单链表存储多项式。
2、算术表达式求值演示
[基本要求]
以字符序列的形式从终端输入语法正确、不含变量的整数表达式,依照书上例3-1演示在求值中运算符栈、运算数栈、输入字符和主要操作的变化过程。
[实现提示]
了解广义表的存储结构,用递归算法求长度;根据存储结构求其表头和表尾。
3、求广义表的长度、表头、表尾
[基本要求]
1 从键盘输入一个广义表
2 求其长度
3 求其表头、表尾
[实现提示]
了解广义表的存储结构,用递归算法求长度;根据存储结构求其表头和表尾。
4、二叉排序树的插入、删除、遍历
[基本要求]
根据输入的关键字序列,建立二叉排序树,并对其进行层次遍历;然后输入要删除的关键字,在建立好的二叉排序树上删除其所在结点。
5、图的相关操作
程序所实现的功能:
(1)建立并显示图的邻接表(或邻接矩阵)。
(2)深度优先遍历,显示遍历结果。
(3)对该图进行拓扑排序,显示排序结果。
(4)给出某一确定顶点到所有其它顶点的最短路径。
先谢谢了
希望能有注释啊谢谢了.没有注释我看不懂啊
最后更新于:2007-06-28 17:47:00
回复列表 (共2个回复)
沙发
xiaoyu1985 [专家分:0] 发布于 2007-07-04 14:48:00
#include<stdio.h>
#include<stdlib.h>
typedef char elemtype;
struct btreenode{
elemtype data;
struct btreenode* left;
struct btreenode* right;
};
/*初始化二叉树*/
void ib(struct btreenode** BT)
{
*BT=NULL;
}
/*清空二叉树*/
void cb(struct btreenode** BT,char* a)
{
struct btreenode* p;
struct btreenode* s[smaxsize];
int top=-1;
int k;
int i=0;
*BT=NULL;
while (a[i]){
switch(a[i]) {
case' ':
break;
case'(':
if(top==smaxsize-1) {
printf("stack is too small,need to add!\n");
exit(1);
}
top++;s[top]=p;k=1;
break;
case')':
if(top==-1){
printf("error!\n");
exit(1);
}
top--;break;
case',':
k=2;break;
default:
p=(struct btreenode*)malloc(sizeof(struct btreenode));
p->data=a[i];p->left=p->right=NULL;
if(*BT==NULL) *BT=p;
else{
if(k==1) s[top]->left=p;
else s[top]->right=p;
}
}
i++;
}
}
int be(struct btreenode* BT)
{
if(BT==NULL) return 1;else return 0;
}
int bd(struct btreenode* BT)
{
if(BT==NULL)
return 0;
else {
int dep1=bd(BT->left);
int dep2=bd(BT->right);
if(dep1>dep2)
return dep1+1;
else
return dep2+1;
}
}
/*查找为值为X结点*/
elemtype* fb(struct btreenode* BT,elemtype x)
{
if(BT==NULL) return NULL;
else{
if(BT->data==x) return &(BT->data);
else {
elemtype* p;
if(p=fb(BT->left,x)) return p;
if(p=fb(BT->right,x)) return p;
return NULL;
}
}
}
void pb(struct btreenode* BT)
{
if(BT!=NULL){
printf("%c",BT->data);
if(BT->left!=NULL||BT->right!=NULL)
{
printf("(");
pb(BT->left);
if(BT->right!=NULL) printf(",");
pb(BT->right);
printf(")");
}
}
}
/*创建*/
void clearb(struct btreenode** BT)
{
if(*BT!=NULL) {
clearb(&((*BT)->left));
clearb(&((*BT)->right));
free(*BT);
*BT=NULL;
}
}
板凳
xiaoyu1985 [专家分:0] 发布于 2007-07-04 14:52:00
#include<stdio.h>
#include<stdlib.h>
#define qmaxsize 20
#define smaxsize 10
typedef char elemtype;
struct btreenode{
elemtype data;
struct btreenode* left;
struct btreenode* right;
};
/*前序*/
void preorder(struct btreenode* BT)
{
if(BT!=NULL) {
printf("%c",BT->data);
preorder(BT->left);
preorder(BT->right);
}
}
/*中序*/
void inorder(struct btreenode* BT)
{
if(BT!=NULL){
inorder(BT->left);
printf("%c",BT->data);
inorder(BT->right);
}
}
/*后序*/
void posorder(struct btreenode* BT)
{
if(BT!=NULL) {
posorder(BT->left);
posorder(BT->right);
printf("%c",BT->data);
}
}
/*按层*/
void levelorder(struct btreenode* BT)
{
struct btreenode* p;
struct btreenode* q[qmaxsize];
int front=0,rear=0;
if(BT!=NULL)
{ rear=(rear+1)%qmaxsize;
q[rear]=BT; }
while(front!=rear) {
front=(front+1)%qmaxsize;
p=q[front];
printf("%c",p->data);
if(p->left!=NULL) {
rear=(rear+1)%qmaxsize;
q[rear]=p->left;
}
if(p->right!=NULL){
rear=(rear+1)%qmaxsize;
q[rear]=p->right;
}
}
}
我来回复