首页 应用 游戏 资讯 攻略

C语言链表逆序技巧

时间:2011-06-24 关注公众号 来源:网络

  简洁的做法是

  遍历链表,

  元素进栈,

  遍历的同时销毁原来的链表。

  元素出栈,

  建立新链表。

  高效的是,

  用指向链表结点指针的指针操作

  直接首尾交换指针值(两两进行)

  一般的是前插法

  实际上根本就不用插入,一次遍历就可以完成了。

  链表的逆序,必将涉及到两个以上指针,一般用三个指针,

  下面是一个人的程序:

  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;

  }

  算法都是一致,但顺序不一样,这直接点明了链表操作的核心——顺序,链表的算法主要难在顺序上。

  逆序操作中,要将一个指针指向前一个节点,中间必然断开,这就需要两个指针指向断开处的一前一后。

  上面两个程序都是这样,不同在于指针移动的位置。

阅读全文
扫码关注“ 多特资源库
更多更全的软件资源下载
文章内容来源于网络,不代表本站立场,若侵犯到您的权益,可联系我们删除。(本站为非盈利性质网站)
玩家热搜

相关攻略

正在加载中
版权
版权说明

文章内容来源于网络,不代表本站立场,若侵犯到您的权益,可联系我们删除。(本站为非盈利性质网站)

电话:13918309914

QQ:1967830372

邮箱:rjfawu@163.com

toast