linklist----reverse

#include <stdio.h>
#include <stdlib.h>
#define N 10
#define M 3

typedef struct node{
    int n;
    struct node *next;
}node_t;

node_t *reverse(node_t *head)
{
    node_t *pre, *cur, *next;

    if(!head || !(head->next))
        return head;

    pre = head;
    cur = head->next;
    while(cur){
        next = cur->next;
        cur->next = pre;

        pre = cur;
        cur = next;
    }
    head->next = NULL;
    return pre;
}

void disp(node_t *head)
{
    node_t *cur;

    for(cur = head; cur; cur = cur->next){
        printf("%d\n", cur->n);
    }
}

int main(void)
{
    int i, remain = N, step = 1;
    node_t *range1, *range2, *newp, *pre, *cur, *head, *tail;
    
    for(i = 0; i < N; i++){
        newp = malloc(sizeof(node_t));
        if(!newp){
            perror("malloc fail!\n");
            return 0;
        }
        newp->n = i + 1;
        newp->next = NULL;

        if(i == 0){
            head = newp;
        }else{
            tail->next = newp;
        }
        tail = newp;
    }
    //tail->next = head;

    range1 = range2 = head;
    while(1){
        range1 = range1->next;
        range2 = range2->next->next;
        if(!range1 || !range2){
            printf("no ring!\n");
            return 0;
        }
        if(range1 == range2){
            printf("ring!\n");
            return 0;
        }
    
    }

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值