码迷,mamicode.com
首页 > 编程语言 > 详细

数据结构c语言中单链表就地逆置问题

时间:2015-06-30 07:45:19      阅读:268      评论:0      收藏:0      [点我收藏+]

标签:

法一:

list_node *list_reverse(list_node *head)  

  • {  
  •     list_node *p = head->next;  
  •     list_node *q = NULL;  
  •     head->next = NULL;  
  •     while(p != NULL)  
  •     {  
  •         q = p->next;          /*保存下一个节点*/  
  •         p->next = head->next; /*把节点插入到头结点后面*/  
  •         head->next = p;       /*头结点一直指向最新插入的节点*/  
  •         p = q;                /*调整指针,指向下一个节点*/  
  •     }  
  • }  

法二

void reverse(struct node *head)

{
struct node *p,*s,*t;
p = head;
s = p->next;
while(s->next != NULL)

{                         //主要置换过程
t = s->next;        // t为临时变量
s->next = p;       // 实施反转
p = s;                 // p向前移动一个结点,为转换下一个结点做准备
s = t;                 // 恢复s指针,以便处理下一个结点
}                        // 此时s->next == NULL,循环结束
s->next = p;      // 翻转最后一个结点
head->next->next = NULL;   // head的next指向的结点是原链表的第一个数据结点
head->next = s;   // 现在s是新的第一个数据结点
}

数据结构c语言中单链表就地逆置问题

标签:

原文地址:http://www.cnblogs.com/it-xiaojun/p/4609244.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!