问题描述
小明买了N对筷子,每对筷子由两只长度相同的筷子组成,不同对筷子的长度也可能相同。每只筷子长度均为正整数。
一天,马虎的小明丢失了一只筷子,只剩下2N-1只筷子,他想知道丢失的筷子的长度是多少?
输入格式
第一行一个整数N,表示筷子的对数。
接下来2N-1行,每行一个整数,依次表示剩下2N-1只筷子的长度。
输出格式
一个整数,表示丢失筷子的长度。
我是用链表做的
代码如下:
#include<stdio.h>
struct kz
{
int length;
kz *next;
};
void add(kz *a,int n) //向节点后插入n
{
kz *in,*t;
t=a;
if(t==NULL)
printf("节点不存在");
else
{
in=new kz;
in->length=n;
in->next=t->next;
t->next=in;
}
return;
}
void move(kz *a) //删除该节点后一个节点
{
kz *out,*t;
t=a;
out=t->next;
if(out!=NULL)
{
t->next=out->next;
delete[] out;
}
else
{
printf("节点不存在");
}
return;
}
void bj(kz *a,int num)
{
if(a->next==NULL) add(a,num);
else if(a->next->length>num) add(a,num);
else if(a->next->length==num) move(a);
else bj(a->next,num);
return;
}
int main()
{
int m,n;
int num;
scanf("%d",&m);
n=2*m-1;
kz *A=new kz;
A->length=0;
A->next=NULL;
do
{
scanf("%d",&num);
bj(A,num);
n=n-1;
}while(n>0);
printf("%d",A->next->length);
}
忽略我的备注,第一次求助,希望有大佬帮我看看,非常感谢!