这里只介绍链表逆置的实现 效果展示:
typedef struct LIST
{
int data;
struct LIST * next;
} list;
void list_addNode ( list * * pHead)
{
list * head;
list * pAdd;
list * pTmp;
head = * pHead;
pTmp = NULL ;
int n, i = 0 ;
printf ( "输入多少个数:" ) ;
scanf ( "%d" , & n) ;
while ( n-- > 0 )
{
pAdd = ( list* ) malloc ( sizeof ( list) ) ;
if ( pAdd == NULL )
{
printf ( "func addNode() error !\n" ) ;
return ;
}
pAdd-> data = ++ i;
pAdd-> next = NULL ;
if ( head == NULL )
{
head = pAdd;
}
else
{
pTmp-> next = pAdd;
}
pTmp = pAdd;
}
* pHead = head;
}
void list_print ( list * head)
{
list * pTmp = NULL ;
if ( head == NULL )
{
printf ( "func list_print() error !\n" ) ;
return ;
}
pTmp = head;
printf ( "Head" ) ;
while ( pTmp)
{
Sleep ( 500 ) ;
printf ( "-> %d " , pTmp-> data) ;
pTmp = pTmp-> next;
}
printf ( "->End\n" ) ;
}
链表逆置过程
void list_inverse ( list * * pHead)
{
list * head;
list * pCur;
list * pPos;
list * pTmp;
if ( pHead == NULL )
{
printf ( "func list_inverse() error !\n" ) ;
return ;
}
head = * pHead;
pCur = head;
pPos = pCur-> next;
while ( pPos)
{
pTmp = pPos-> next;
pPos-> next = pCur;
pCur = pPos;
pPos = pTmp;
}
head-> next = pPos;
head = pCur;
* pHead = head;
}
int _tmain ( int argc, _TCHAR* argv[ ] )
{
list * head = NULL ;
list_addNode ( & head) ;
list_print ( head) ;
list_inverse ( & head) ;
print ( head) ;
system ( "pause" ) ;
return 0 ;
}