一个小算法问题,会的进来看看查询比较
在链表中
比如有 9 8 7 6 5 4
这么几个数
我要实现这样的:
比如我输入 6
便输出 7 8 9(这三数不要求排序,如能排序也行)
并统计个数 (本例输出共3个)
输入9
便显示超出犯围
该如何实现
如有相似的源代码供参考更是感激不尽!
问题点数:20、回复次数:8Top
1 楼mccxj(老鼠不逛街)回复于 2005-06-04 20:25:50 得分 0
用双向链表。。。对于输入的数字进行查询。。找到之后反向访问节点。。并且逐个输出就可以了。。。Top
2 楼sunman1982(冥王星)回复于 2005-06-04 20:25:57 得分 0
遍历的时候 比较 大的就输出 否则跳过就好了啊,设置一个计数器,
不是很复杂的啊Top
3 楼sunman1982(冥王星)回复于 2005-06-04 20:30:00 得分 20
nodeType<int>*p;
p=new nodeType<int>;
assert(p!=NULL);
p=head;
int count;
while(p!=NULL)
{
p=p->link;
if(p->info>6)
{
cout<<p->info<<" ";
count++;
p=p->link;
}
p=p->link;
}Top
4 楼linuxchenyy(阿雨(linux,c/c++初学者,大虾们:抱拳~~久仰~))回复于 2005-06-04 20:44:34 得分 0
struct student
{
char num[10];
char name[20];
char sex[4];
int cgrade;
int mgrade;
int totle;
int ave;
char neartime[10];//最近更新时间
};
typedef struct node
{
struct student data;
struct node *next;
}Node,*Link;
----
该如何按上述方法找到mgrade里面
随机输入一个数 如60
便输出所有大于60的数呢?Top
5 楼gogdo(草草)回复于 2005-06-04 21:00:46 得分 0
对不起发错了。!!!!!!!!!!!
Top
6 楼foochow(无聊,灌水......)回复于 2005-06-04 21:08:57 得分 0
很简单啊,是不是只要输出比6大的数字??Top
7 楼linuxchenyy(阿雨(linux,c/c++初学者,大虾们:抱拳~~久仰~))回复于 2005-06-04 21:12:52 得分 0
不是的呀,
6只是举的一个例子,
6是随机的~~
从键盘上输入的
就是一个查询,,
然后输出所有比它大的Top
8 楼linuxchenyy(阿雨(linux,c/c++初学者,大虾们:抱拳~~久仰~))回复于 2005-06-04 22:17:46 得分 0
void Mgradesort(Link l) //按数学成绩查询
{
//Node *r=l->next;
int count=0;
int a;
Node *pm;
pm=l->next;
if(l==NULL)
{
printf("\n=====>没有资料可以查询~\n");
return;
}
while(l)
{
printf("请输入你想查询成绩的下线:");
scanf("%d",&a);
if(pm->data.mgrade>a)
{
printf("\t\t%s\t\t\t%d\n",pm->data.name,pm->data.mgrade);
count++;
pm=pm->next;
printf("\t\t\t\t\t一共有(%d)个\n",count);}
else
{ count==0;
printf("没有超过此分的数据!\n");
}
pm=l->next;
break;
}
printstart();//打印主菜单
}
-----------
这样写有错误吗?
我运行只能比较出一个数,无是无论有多少个超过输入的数,
它只输出一个数
并且统计也是一个
要怎么改才能实现呢?Top




