问题描述
- C语言中单向的链表反转
-
node* reverse1(node * head)
{
node*p,*q,*r;
p = head;q = head->next;
head->next = NULL;
while(q){r = q->next;
q->next = p;
p = q;
q = r;
}head=p;
/* while(p)
{
printf("%d ",p->num);
p=p->next;
}*/
printf("
");
return head;}
解决方案
#include <stdio.h>
#include <stdlib.h>
typedef struct _node
{
int data;
struct _node *next;
} node;
node*
reverse1(node * head)
{
node*p,*q,*r;
if( head != NULL )
{
p = head;
q = head->next;
head->next = NULL;
while(q){
r = q->next;
q->next = p;
p = q;
q = r;
}
head=p;
}
return head;
}
int
main( void )
{
node *link = NULL;
node *tmp = NULL;
int i = 0;
for( i = 0; i < 5; i++ )
{
tmp = malloc( sizeof( node ) );
if( tmp == NULL )
return -1;
tmp->data = i;
tmp->next = link;
link = tmp;
}
tmp = link;
printf( "before reversal:
" );
while( tmp )
{
printf( "%d ", tmp->data );
tmp = tmp->next;
}
putchar( '
' );
link = reverse1( link );
printf( "after reversal:
" );
tmp = link;
while( tmp )
{
printf( "%d ", tmp->data );
tmp = tmp->next;
}
putchar( '
' );
return 0;
}
测了一下,应该可以使吧
解决方案二:
示意图
代码实现
[cpp]?view
plaincopy
#include<stdio.h>??
???
struct?ListNode{??
????int&nb......
答案就在这里:C 单向链表反转
----------------------
时间: 2024-08-01 02:58:56