int isOrder(List *head)
{
List *p = head;
int flagl = 0,flagr = 0;//记录方向变化,尽快判断是否有序
int nDirection = 0; //记录比较方向
int nTimer = 0; //记录比较次数
if (head == NULL)
return 1; //为空有序
while(p->next)
{
if (p->next->data > p->data){
flagl = 1;
nDirection++;
}
else if (p->next->data < p->data){
flagr = 1;
nDirection--;
}
else return 0;//含有相等数
if(flagl && flagr) return 0;//方向发生变化
nTimer++;
p = p->next;
}
if ((nTimer - abs(nDirection)) == 0)
return 1; //如果比较次数和方向累积的次数一致则单调
else return 0;
}
判断单链表是否单调有序(c语言)
最新推荐文章于 2023-01-08 17:19:52 发布