C语言 单链表逆置 递归算法,单链表逆置递归算法(C语言)

#include

typedef int Element;

typedef struct LinkListType

{

Element data;

struct LinkListType * next;

} LinkList ;

//reverse a link list recursively

LinkList * reverse(LinkList * pre, LinkList * cur)

{

if(!cur)

return pre;

LinkList * head = reverse(cur, cur->next);

cur->next = pre;

return head;

}

int main()

{

int i;

LinkList *head = NULL, * pre=NULL, * cur=NULL;

//initial a link list

for(i=0; i<12; i++)

{

cur = (LinkList*)malloc(sizeof(LinkList));

if(!head)

head = cur;

cur->data = i;

cur->next = NULL;

if(pre)

pre->next = cur;

pre = cur;

}

cur = head;

//print the original list to stdout

while(cur)

{

printf("%d -> ", cur->data);

cur = cur->next;

}

printf("#/n");

//reverse the link list

head = reverse(NULL, head);

//print the reversed link list to stdout

while(head)

{

printf("%d -> ", head->data);

head = head->next;

}

printf("#/n");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值