回 帖 发 新 帖 刷新版面

主题:急求答案啊!一共五道题,有一道答案就好.

1、 一元多项式计算
[基本要求] 
1    按照升幂顺序输入多项式A和B
2    多项式A和B相加
3    多项式A和B相减
[实现提示]
用带表头结点的单链表存储多项式。

2、算术表达式求值演示
[基本要求] 
以字符序列的形式从终端输入语法正确、不含变量的整数表达式,依照书上例3-1演示在求值中运算符栈、运算数栈、输入字符和主要操作的变化过程。
[实现提示]
了解广义表的存储结构,用递归算法求长度;根据存储结构求其表头和表尾。

3、求广义表的长度、表头、表尾
[基本要求] 
1    从键盘输入一个广义表
2    求其长度
3    求其表头、表尾
[实现提示]
了解广义表的存储结构,用递归算法求长度;根据存储结构求其表头和表尾。

4、二叉排序树的插入、删除、遍历
[基本要求]
根据输入的关键字序列,建立二叉排序树,并对其进行层次遍历;然后输入要删除的关键字,在建立好的二叉排序树上删除其所在结点。

5、图的相关操作
程序所实现的功能:
    (1)建立并显示图的邻接表(或邻接矩阵)。
    (2)深度优先遍历,显示遍历结果。
    (3)对该图进行拓扑排序,显示排序结果。
    (4)给出某一确定顶点到所有其它顶点的最短路径。
先谢谢了
希望能有注释啊谢谢了.没有注释我看不懂啊

回复列表 (共2个回复)

沙发


#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;
   }
}

板凳

#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;
      }
    }
  }

我来回复

您尚未登录,请登录后再回复。点此登录或注册