首页 > 编程语言 > 详细

C语言 单链表的 反序输出 与 反转

时间:2016-02-28 17:01:58      阅读:310      评论:0      收藏:0      [点我收藏+]
  1. 链表的反序输出(实际上链表中的内容未改变)

思想:利用递归的思想,将链表遍历至最后一个链表,然后输出,在返回上一个节点输出。

//定义节点类型
typedef struct Node
{
	int data;
	struct Node* next;
}Node;
/*..创建链表略...*/
//逆序输出
void print_backwards(Node* head)
{
Node* curr=NULL;
curr=head->next;
if(curr==NULL)
{
return ;
}
print_backwards(curr);
printf("%d\n",curr->data);
}

代码很简单,但主要是要靠画图来理解,特别注意输出函数的摆放位置。

2.链表的反转:将链表中的内容反转,如1->2->3->4反转成4->3->2->1

思想:遍历一遍链表,利用一个辅助指针,记录遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经记录的指针往后依次移动继续遍历。

技术分享

//定义节点类型

typedef struct Node
{
int data;
struct Node* next;
}Node;
void reverse(Node*head)
{
if(head==NULL)
{
return ;
}
Node *pre,*curr,*ne;
pre=head->next;
curr=pre->next;
pre->next=NULL;//主要是为了响应链表输出函数。
while(curr)
{
ne=curr->next;
curr->next=pre;
pre=curr;
curr=ne;
}
head->next=pre;
}


本文出自 “君峰俊宇” 博客,请务必保留此出处http://10274409.blog.51cto.com/10264409/1745726

C语言 单链表的 反序输出 与 反转

原文:http://10274409.blog.51cto.com/10264409/1745726

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!