您的位置:首页 > 其它

链表逆序输出

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: