64,650
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <stdlib.h>
typedef struct Node list ;
struct Node
{
int element ;
struct Node *next;
} ;
using namespace std ;
list* creatList( )
{
int data ;
list *head ;
list *rearPtr ,*newNodePtr ;
head = NULL ;
while ( scanf("%d",&data) && data!=0 )
{
if( head == NULL )
{
newNodePtr = ( list* )malloc( sizeof( list ) ) ;
newNodePtr->element = data ;
newNodePtr->next = NULL ;
head = newNodePtr ;
rearPtr = head ;
}
else
{
newNodePtr = ( list* )malloc( sizeof( list ) ) ;
newNodePtr->element = data ;
newNodePtr->next = NULL ;
rearPtr->next = newNodePtr ;
rearPtr = newNodePtr ;//rearPtr永远指向尾节点
}
}
return head ;
}
void outPut( list *head )
{
if( head == NULL )
printf("链表为空\n");
else
while( head != NULL )
{
printf("%d ",head->element ) ;
head = head->next ;
}
printf("\n") ;
}
list* reverseList( list *head )
{
list *reverHead ;
list *t ;
reverHead = NULL ;
while( head!=NULL )
{
t = head->next ;
head->next = reverHead ;
reverHead = head ;
head = t ;
}
return reverHead ;
}
int main( )
{
list *head ;
head = creatList( ) ;
cout<<"原链表序列"<<endl ;
outPut( head ) ;
head = reverseList( head ) ;
cout<<"逆转后的链表序列"<<endl ;
outPut( head ) ;
return 0 ;
}