这是struct的定义:ElemType
和status
都等于int
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
身体:
case 15://ReverseList
if(ReverseList(&L[i_num]) == INFEASIBLE)
printf("The list doesn't exist!\n");
else if(ReverseList(&L[i_num]) == ERROR)
printf("The list is empty!\n");
else
printf("Success!\n");
getchar();
getchar();
break;
这是一个函数:
status ReverseList(LinkList *L)
//reverse the list
{
if(L)
{
LinkList prev=NULL;
LinkList cur=*L;
LinkList next=NULL;
while(cur)
{
next=cur->next;
cur->next=prev;
prev=cur;
cur=next;
}
*L=prev;
return OK;
}
else
return INFEASIBLE;
}
在运行func之后,链表没有被反转。
怎么会呢?:)
reverselist函数不工作或
1条答案
按热度按时间qv7cva1a1#
在这些嵌套的if语句中
一个非空的列表被反转两次。第一次在if语句的条件下被反转
如果结果不是INFEASIBLE,那么下一个if语句将获得控制权
并且第二次反转该列表。
您需要将函数调用的结果赋给一个变量,并在if语句中检查该变量。
注意函数不会返回ERROR。所以第二个if语句在任何情况下都没有意义。
所以你可以写
或