我创建了一个函数,它将比较链表中的数字,以确定哪个数字最小,哪个数字最大。我知道FirstNumber = determine->newNum;
指向列表中的当前数字。
我如何呼吁SecondNuumber = ?;
获取列表中的下一个号码?
typedef struct A_NewNumber {
struct A_NewNumber *next;
double newNum;
} NewNumber;
void NumberSize(NewNumber *start){
NewNumber *determine = start;
double SecondNumber =0;
double FirstNumber = 0;
while(determine){
//the number from the current node
FirstNumber = determine->newNum;
SecondNuumber = next->newNum;
if(FirstNumber < SecondNumber){
printf("The biggest number is:\n", SecondNumber);
}else{
printf("The smallest number is:\n", FirstNumber);
}
}
}
答案 0 :(得分:1)
要访问列表中的第二个数字,您需要一个指向该数字的指针,该指针应该是第一个节点的next
指针。在您的代码中,未定义next
。它应该是这样的:
FirstNumber = determine->newNum;
SecondNumber = determine->next->newNum;
另外,您没有提供NewNumber
的定义。如果定义发布在问题中会更清楚。
答案 1 :(得分:1)
您可以使用newNum
访问下一个节点中的determine->next->newNum
并以这种方式更改while
循环:
while(determine->next != NULL){
//the number from the current node
FirstNumber = determine->newNum;
SecondNuumber = determine -> next->newNum;
if(FirstNumber < SecondNumber){
printf("The biggest number is:%lf\n", SecondNumber);
printf("The smallest number is:%lf\n", FirstNumber);
}else{
printf("The biggest number is:%lf\n", FirstNumber);
printf("The smallest number is:%lf\n", SecondNumber);
}
determine = determine -> next;//to traverse along the list
}
最后提供determine = determine -> next;
对于遍历或移动链表是必不可少的,如果不是你被困在同一个地方并且让你的循环成为无限循环
您忘记在printf()
答案 2 :(得分:0)
这应该这样做:
typedef struct a_node
{
struct a_node* next;
double n;
}Node;
void numberSize(Node* dList)
{
if(dList == NULL)
{
return;
}
Node* current = dList;
double a, b;
while(current->next != NULL)
{
a = current->n;
b = current->next->n;
// your message.
current = current->next;
}
}