Chinaunix首页 | 论坛 | 博客
  • 博客访问: 340619
  • 博文数量: 88
  • 博客积分: 2011
  • 博客等级: 大尉
  • 技术积分: 885
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-21 14:50
文章分类

全部博文(88)

文章存档

2010年(88)

我的朋友

分类: C/C++

2010-07-10 14:31:06

/*
 * Description:
 *          链表逆序以及合并,非递归和递归实现。
 * Author  :FinL
 * Language: C
 * Date    : 2010-08-06
 */

#include
#include

struct Node{
int data;
Node *next;
};

typedef struct Node Node;


//已知链表的头结点,将链表逆序
Node *ReverseList(Node *head)
{
Node *p1,*p2,*p3;

if(NULL==head->next||NULL==head)
return head;

p1=head;
p2=p1->next;
p3=p2->next;

p1->next=NULL;
while(NULL!=p3)
{
p2->next=p1;
p1=p2;
p2=p3;
p3=p3->next;
}
p2->next=p1;
head=p2;

return head;

}

//合并两个各自有序的链表head1,head2为一个依然有序的链表(要求保留所有结点)。
Node *MergeList(Node *head1,Node *head2)
{
Node *p1,*p2,*head,*tmp;

if(NULL==head1)
return head2;
if(NULL==head2)
return head1;

if(head1->datadata)
{
head=head1;
阅读(987) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~