链表逆序输出
2008-11-04 15:56
369 查看
最近随手写了一个链表逆序的算法,全当练手好了。
代码比较简单,不做介绍了,如下:
Code
// linkreverse.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
typedef struct Node
{
int val;
struct Node* next;
}LinkNode,*Link;
void CreateLink(Link* head)
{
if(*head == NULL)
*head = new LinkNode;
(*head)->val = 38;
(*head)->next = NULL;
Link p = *head;
for(int i = 0;i < 9;i++)
{
Link newNode = new Node;
newNode->val = i;
newNode->next = p;
p = newNode;
}
*head = p;
}
Link Reverse(Link head)
{
if(head == NULL)
return NULL;
Link p1 = head;
Link p2 = head->next;
Link p = NULL;
while( p1 != NULL)
{
p2 = p1->next;
p1->next = p;
p = p1;
p1 = p2;
}
//p1->next = p; //连接最后一个节点
return p;
}
void Print(Link head)
{
while(head != NULL)
{
printf("%d ",head->val);
head = head->next;
}
printf("\n");
}
void Destroy(Link head)
{
Link p = NULL;
while(head)
{
p = head->next;
delete head;
head = p;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
Link head = NULL;
CreateLink(&head);
Print(head);
head = Reverse(head);
Print(head);
Destroy(head);
return 0;
}
代码比较简单,不做介绍了,如下:
Code
// linkreverse.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
typedef struct Node
{
int val;
struct Node* next;
}LinkNode,*Link;
void CreateLink(Link* head)
{
if(*head == NULL)
*head = new LinkNode;
(*head)->val = 38;
(*head)->next = NULL;
Link p = *head;
for(int i = 0;i < 9;i++)
{
Link newNode = new Node;
newNode->val = i;
newNode->next = p;
p = newNode;
}
*head = p;
}
Link Reverse(Link head)
{
if(head == NULL)
return NULL;
Link p1 = head;
Link p2 = head->next;
Link p = NULL;
while( p1 != NULL)
{
p2 = p1->next;
p1->next = p;
p = p1;
p1 = p2;
}
//p1->next = p; //连接最后一个节点
return p;
}
void Print(Link head)
{
while(head != NULL)
{
printf("%d ",head->val);
head = head->next;
}
printf("\n");
}
void Destroy(Link head)
{
Link p = NULL;
while(head)
{
p = head->next;
delete head;
head = p;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
Link head = NULL;
CreateLink(&head);
Print(head);
head = Reverse(head);
Print(head);
Destroy(head);
return 0;
}