【发布时间】:2017-09-04 23:59:01
【问题描述】:
我认为这应该可以正常工作...我不确定它有什么问题?这是我的代码的 sn-p。如果给定的整数列表不是升序,则假设返回 0,如果是升序,则返回 1。
struct Node{
int data;
Node *pNext;
};
int isItSorted(Node *pHead){
while(pHead != NULL){
if(pHead->data > pHead->pNext->data)
return 0;
else
return 1;
pHead = pHead->pNext;
}
return 1;
}
【问题讨论】:
-
您的代码将遇到未定义的行为,因为您在取消引用之前没有验证
pHead->pNext != NULL。这可能是您的问题的原因。 -
另外,请发布您创建列表的代码 - 您可能没有正确初始化字段(例如在适当时将
pNext明确设置为NULL)。 -
你的代码永远不会执行超过一次的循环迭代,因为循环体中有一个无条件的
return。 -
您的代码在比较两个节点后返回,正如
if(pHead->data > pHead->pNext->data) return 0; else return 1;所期望的那样...无论是否在循环内,这将比较两个节点并返回。如果您不希望它返回,请删除return关键字(提示:您确实想在这些分支的 一个中使用return,但是 不是另一个);你需要把一些其他逻辑放在那里... 你的书呢?
标签: c data-structures linked-list nodes