单链表-判断单链表L是否是递增的(双指针法)

单链表的存储结构:
typedef struct LinkList{
int data;
LinkList * next;
}

分析:
定义一个指针p够不够用?
你要判断是否递增,说明要比较前后两节点的数据域。
如果前者一直大于后者,那么可判断该单链表递增。
所以这里要定义两个指针,pre ,p.

思路:
1.定义两个前后指针pre ,p,并pre开始指向头结点
2.通过while判断,条件为p != null
如果pre->data < p->data ,说明为正序,则继续比较下一个节点
否则 返回0;

C代码实现:

 int iscrease(LinkList * L){
        LinkList * pre = L,* p;
        p = pre ->next;
        while(p != null){
            if(pre->data < p->data){
                pre = p;
                p = p->next;
        }else return 0;
    }
    return 1;
}
  • 1
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 1. 首先判断链表是否为空,如果为空则认为是递增的。 2. 如果链表不为空,则从头节点开始遍历链表。 3. 每次遍历到一个节点,就将该节点的值与前一个节点的值进行比较。 4. 如果该节点的值小于等于前一个节点的值,则认为不是递增的,返回false。 5. 如果遍历完整个链表都没有发现不是递增的情况,则认为是递增的,返回true。 ### 回答2: 设计判断链表中元素是否递增的算的思路如下: 1. 首先,判断链表是否为空。如果链表为空,则直接返回false,因为没有元素表示不是递增的。 2. 定义一个指针p,从链表头节点开始遍历整个链表。 3. 在遍历的过程中,比较当前节点的值和下一个节点的值。如果当前节点的值大于等于下一个节点的值,则表明链表不是递增的,直接返回false。 4. 如果遍历完成后,没有发现其他情况,则返回true,表示链表中的元素是递增的。 下面是算的实现代码: ```python def is_increasing_linked_list(head): if not head: # 链表为空 return False p = head while p.next: # 遍历链表 if p.val >= p.next.val: # 当前节点的值大于等于下一个节点的值 return False p = p.next return True ``` 注意,上述代码中的`head`表示链表的头节点,`p.next`表示当前节点的下一个节点,`p.val`表示当前节点的值。 该算的时间复杂度是O(n),其中n表示链表中节点的个数。算中需要遍历整个链表,最差情况下需要遍历n-1个节点,所以时间复杂度是O(n)。 ### 回答3: 设计一个判断链表中元素是否递增的算可以遵循以下步骤: 1. 首先,我们需要定义一个指针变量指向链表的头节点,并且定义一个变量用于存储当前节点值。 2. 然后,通过遍历整个链表判断每个节点的值是否递增。 具体的算步骤如下: 1. 定义一个指针变量`current`指向链表的头节点。 2. 定义一个变量`prevValue`用于存储上一个节点的值,初始值为`-∞`。 3. 通过循环遍历链表,直到`current`为空为止: - 将当前节点的值存储到`currentValue`变量中。 - 判断`currentValue`是否小于或等于`prevValue`,如果是,则表明链表元素不是递增的,返回`false`。 - 令`prevValue`等于`currentValue`。 - 将`current`指针指向下一个节点。 4. 当循环结束后,如果没有返回`false`,则说明链表的所有元素都是递增的,返回`true`。 该算的时间复杂度为O(n),其中n是链表中的节点数,因为我们需要遍历整个链表一次来进行判断

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值