C语言链表逆序技巧_C/C++语言_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

C语言链表逆序技巧

作者:黑客防线网安C/C++教程基地 来源:黑客防线网安C/C++教程基地 浏览次数:0

本篇关键词:技巧语言指针struct
黑客防线网安网讯: 简洁的做法是  遍历链表,  元素进栈,  遍历的同时销毁原来的链表。  元素出栈,  建立新链表。  高效的是,  用指向链表结点指针的指针操作  直接首尾交换指针值(两两...
 简洁的做法是
  遍历链表
  元素进栈
  遍历的同时销毁原来的链表
  元素出栈,
  建立新链表
  高效的是,
  用指向链表结点指针的指针操作
  直接首尾交换指针值(两两进行)
  一般的是前插法
  实际上根本就不用插入,一次遍历就可以完成了。
  链表的逆序,必将涉及到两个以上指针,一般用三个指针,
  下面是一个人的程序:
  struct List1 *reverse(List1 *h) //h为链表的头指针
  {
  struct List1 *p,*v1,*v2;
  v2=h;
  v1=NULL;
  while( v2!=NULL ){
  p=v2->pNext;
  v2->pNext=v1;
  v1=v2;
  v2=p;
  }
  return v1;
  }
  另一个人的:
  struct IntNode* res(struct IntNode* h)
  {
  struct IntNode *s, *s1;
  s = h;
  h = NULL;
  while (s)
  {
  s1 = s;
  s = s->next;
  s1->next = h;
  h = s1;
  }
  return h;
  }
  算法都是一致,但顺序不一样,这直接点明了链表操作的核心——顺序,链表的算法主要难在顺序上。
  逆序操作中,要将一个指针指向前一个节点,中间必然断开,这就需要两个指针指向断开处的一前一后。
  上面两个程序都是这样,不同在于指针移动的位置。
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-15440-1.html
网站维护教程更新时间:2012-04-04 22:55:00  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer