LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: scream

大家帮我看看这个题目(有关数据结构中的插入)

[复制链接]
发表于 2003-3-2 14:58:26 | 显示全部楼层
re: (1)怎么让程序响应回车结束呢?
这个问题不太好回答。回车只是让系统把缓冲区中的数据传送给程序。在大多数情况下,最好是由用户显示地通知程序“输入已经完成”。很少有单纯所回车当作输入的结束。因为用户的输入可以在一行完成,如1,2,3,4,。。。,也有可能一行一个数据,如:
1
2
3
4
。。。
这样用回车作为结束是很不方便的。还是在程序中采用输入 "q"或者“x",显示通知程序输入结束要好些。
re:  (3)请大家帮我检查一下程序是不是还有我看不出来的错误.
当然会有其它错误。我只输入字母而不是数字,就发生问题了。哈哈。。。
re:   (4)最后,好象在mian()函数中定义变量一定要在为结构体成员变量赋值之前,要不然就报错.这里就是sl.last=0一定要在int count,a,b等;之前.请问这是为什么?
这个我试过了,没有发生你所说的问题。你不妨再试一下,如果还有问题,把这段代码贴出来看看。
 楼主| 发表于 2003-3-2 18:38:50 | 显示全部楼层
多谢kj兄啊
我现在这个程序还存在至少三个问题
1。在数组赋值和输入插入数时判断是否数字(我会试试kj兄的办法);
2。在数组赋值和输入插入数时判断是否溢出(相对好办);
3。不允许输入相同的数。
我会继续改进的。
在数组赋值时输入一个数后(1)要判断是否数字并且(2)判断数字是否相同,若不是或数字相同则回到printf("\nNow the number%d:",count+1);  有这两个条件判断在一段执行之后,应该用什么办法好呢,do while??
还有就是在判断是否数字时是否可以考虑运用if(sizeof(temp)!=2)???
再次感谢!!
发表于 2003-3-2 21:51:49 | 显示全部楼层
用scanf("%d",x)即可确保输入的是整数,不需要那么麻烦。用if(sizeof(temp)!=2)是不可取的,因为整数的长度与cpu和编译参数有关,用这种办法会给程序的可移植性带来问题。
判断是否有数字相同,可以和后面的排序结合起来,因为要检查以前输入的数字中是否有相同的数字,必然有一个搜索过程,而排序实际上也是一个搜索过程。所以输入一个数时就把它和其它数字相比较,然后插入到合适的位置上,到输入结束时,数组自然也排好序了。这样一来,程序实际上只要一个算法就够了,就是插入排序。前面先输入后排序的部分完全可以不要。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表