2021-01-21

  1. 数据结构可用三元式表示(D,S,P)。其中:D是数据对象,S是D上的关系集,P是对D的基本操作集。×
    (DSP是指抽象数据类型,数据结构用DS表示)

  2. 队列是数据对象特定的线性表。(字符串)×

  3. 一棵无向连通图的生成树是其极大的连通子图。(极小)×

  4. 完全二叉树必定是平衡二叉树。(平衡二叉树有序)×

  5. 若广义表LS满足GetHead(LS)==GetTail(LS),则LS为( b )。
    A. ( ) B. (( )) C. (( ),( )) D. (( ),( ),( ))

  6. 单链表结点的类型定义如下:
    typedef struct LNode {
    int data;
    struct LNode *next;
    } LNode, *Linklist;
    写一算法,Contrary(linklist &L) ,对一带头结点且仅设尾指针L的循环单链表就地逆置。(即首元变尾元,尾元变首元。)

void Contrary(linklist &L)
{ p=L->next; q=L;
while(p!=L)
{ r=p->next; p->next=q; q=p; p=r; }
p->next=q;
}

2.二叉树用二叉链表存储表示。
typedef struct BiTNode {
TelemType data;
Struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
试编写销毁二叉树T的算法DestroyBiTree ( BiTree &T)。

void DestroyBiTree ( BiTree &T)
{ if(!T) return;
if(T->lchild) DestroyBiTree(T->lchild);
if(T->rchild) DestroyBiTree(T->rchild);
free(T); T=NULL;
}

3.设带头结点的单链表中的元素以值非递减有序排列,试编写算法,删除表中所有值相同的多余元素。
单链表结点的类型定义如下:
typedef struct LNode{
int data;
Struct LNode *next;
}LNode, *LinkList;

void Delete_same(LinkList L)
{ if(!L->next) return;
p=L->next; q=p->next;
while(q)
if(p->data==q->data)
{ p->next=q->next; free(q); q=p->next;}
else
{ p=q; q=q->next;}
}

4.设在一个带头结点的单链表中所有元素结点的数据值无序排列,设计一个算法,删除表中所有大于min且小于max的元素(若存在)。

typedef int DataType (0.5分)
void rangeDelete(LinkList &L, DataType min, DataType max){ (1.5分)
LinkNode *pr=L, *p=L->link; (1分)
while(p!=NULL) (1分)
if(p->data>min && p->data<max) (1分)
{pr->link=p->link; delete p; p=pr->link;} (3分)
else
{pr=p; p=p->link;} (2分)

  1. 当二叉树采用二叉链表存储结构存储方式时,写出二叉树及其结点结构的 C 语言实现代码。(4 分)设计一个计算一颗给定二叉树的所有节点总数的算法。(6 分)

(1)参考代码(可以有所不同)
typedef struct node *link;
struct node{Item item; link l,r};
(2)参考答案(可以有所不同)
int nodes( link t){
int nl,nr;
if (t== NULL) return 0;
else if((t->l== NULL)&& (t->r== NULL)) return 1;
else{
nl = nodes(t->l);
nr = nodes(t->r);
return (nl + nr + 1);
} }

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值