SDUST数据结构 - 19级期末考试
判断题:
选择题:
函数题:
6-1 统计二叉树叶子结点个数:
题目:
裁判测试程序样例:
#include <stdio.h>
#include <stdlib.h>
typedef char ElemType;
typedef struct BiTNode
{
ElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
BiTree Create();/* 细节在此不表 */
int LeafCount ( BiTree T);
int main()
{
BiTree T = Create();
printf("%d\n", LeafCount(T));
return 0;
}
/* 你的代码将被嵌在这里 */
输出样例:
代码:
int LeafCount ( BiTree T) { if(T==NULL) return 0; if(T->lchild == NULL && T->rchild == NULL) return 1; else return LeafCount(T->lchild) + LeafCount(T->rchild); }
6-2 递增的整数序列链表的插入 :
题目:
裁判测试程序样例:
#include <stdio.h>
#include <stdlib.h>
typedef int ElementType;
typedef struct Node *PtrToNode;
struct Node {
ElementType Data;
PtrToNode Next;
};
typedef PtrToNode List;
List Read(); /* 细节在此不表 */
void Print( List L ); /* 细节在此不表 */
List Insert( List L, ElementType X );
int main()
{
List L;
ElementType X;
L = Read();
scanf("%d", &X);
L = Insert(L, X);
Print(L);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
5
1 2 4 5 6
3
输出样例:
1 2 3 4 5 6
代码:
/* 你的代码将被嵌在这里 */
List Insert( List L, ElementType X )
{
List p,q;
q = L;
p = (List)malloc(sizeof(PtrToNode));
p ->Next = NULL;
p->Data = X;
while(L->Next && L->Next->Data<X)
{
L = L->Next;
}
p ->Next = L->Next;
L->Next = p;
return q;
}
编程题:
7-1 点赞狂魔 :
题目:
输入样例:
5
bob 11 101 102 103 104 105 106 107 108 108 107 107
peter 8 1 2 3 4 3 2 5 1
chris 12 1 2 3 4 5 6 7 8 9 1 2 3
john 10 8 7 6 5 4 3 2 1 7 5
jack 9 6 7 8 9 10 11 12 13 14
输出样例:
jack chris john
代码:
#include <cstdio>
#include <string.h>
#include <string>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <set>
using namespace std;
const int maxen=1010;
struct edge{
char name[30];
int num;
int sum;
}node[maxen];
bool cmp(edge x,edge y){
if(x.sum==y.sum)
return x.num<y.num;
return x.sum>y.sum;
}
int main(void){
int n,k,u,count=0;
char a;
memset(node,0,sizeof(0));
scanf("%d",&n);
for(int i=1;i<=n;++i)
{
set<int> st;
scanf("%s",node[i].name);
scanf("%d",&k);
node[i].num=k;
for(int j=1;j<=k;++j)
{
scanf("%d",&u);
st.insert(u);
}
node[i].sum=st.size();
}
sort(node+1,node+1+n,cmp);
if(n==1){
printf("%s - -\n",node[1].name);
}
else if(n==2)
{
printf("%s %s -\n",node[1].name,node[2].name);
}
else
{
for(int i=1;i<=3;++i){
if(i==1)
printf("%s",node[i].name);
else
printf(" %s",node[i].name);
}
printf("\n");
}
return 0;
}
The Working Class Must Lead!