单链表遍历一次逆序输出

#include<stdio.h>
#include<stdlib.h>
/
typedef struct Node
{
    int value;
    struct Node * next;
} NODE;

/单链表一次遍历逆序函数 
NODE * reverse(NODE * head)
{
	NODE * current = head->next;
    NODE * p1 = NULL;
    NODE * p2 = current->next;
	if((head == NULL) || (head->next == NULL))	return NULL;
     
    while(p2!=NULL)
    {
		current->next=p1;
		p1=current;
		current=p2;
		p2=p2->next;
    }
    current->next = p1;
    return current;
}

/测试。。 
int main()
{
    NODE * head = (NODE *)malloc(sizeof(NODE));
    head->next=NULL;
    NODE * p = head;
    int i;
    for(i=0;i<10;i++)
    {
       NODE * newnode = (NODE *)malloc(sizeof(NODE));
       newnode->next=NULL;
       newnode->value=i;
       p->next = newnode;
       p=p->next;
    }
    
    NODE * q = head->next;
    printf("/nBefore reverse../n");
    while(q!=NULL)
    {
        printf("%d->",q->value);
        q=q->next;
    }
    
    q = reverse(head);
    
    printf("/nAfter reverse../n");
    while(q!=NULL)
    {
        printf("%d->",q->value);
        q=q->next;
    }
    
    system("pause");
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值