设为首页 加入收藏

TOP

链表逆序的递归/非递归算法
2014-11-23 23:11:44 来源: 作者: 【 】 浏览:2
Tags:算法

C代码
/**
*链表逆序的递归/非递归算法
*/
#include
typedef int Item;
typedef struct node
{
Item item;
struct node *next;
}Node, *List;

/*reverse1~2是不带头结点的逆序算法*/
List reverse1(List l)
{
Node *p1,*p2;
if(l==NULL)
return l;
p1=l->next;
l->next=NULL;
while(p1!=NULL){
p2=p1->next;
p1->next=l;

l=p1;
p1=p2;
}
return l;
}
List reverse2(List l)
{
if(l==NULL || l->next==NULL)
return l;
Node *p=reverse2(l->next);
l->next->next=l;
l->next=NULL;
return p;
}
/*reverse3~4是带头结点链表的逆序算法*/
void reverse3(List l)
{
Node *p1,*p2,*p3;
if(l==NULL || l->next==NULL)
return;
p1=l->next;
p2=p1->next;
p1->next=NULL;
while(p2!=NULL){
p3=p2->next;
p2->next=p1;
p1=p2;
p2=p3;
}
l->next=p1;
}
void reverse4(List l, Node *first)/*此算法不是很好,需要在函数外判断l!=NULL*/
{
if(first==NULL || first->next==NULL){
l->next=first;
return;
}
reverse4(l,first->next);
first->next->next=first;
first->next=NULL;
}

作者“Ackerman's Blog”

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇 串口异步同步通讯 下一篇使用odbc读写excel类: (2) 源文件

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: