c语言 链表倒序,C语言链表逆序方法技巧

C语言链表逆序方法技巧

C语言有丰富的数据结构和运算符。包含了各种数据结构,如整型、数组类型、指针类型和联合类型等,用来实现各种数据结构的运算。下面是小编为大家搜索整理的C语言链表逆序方法技巧,希望大家能有所收获,更多精彩内容请及时关注我们应届毕业生考试网!

简洁的做法是

遍历链表,

元素进栈,

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

元素出栈,

建立新链表。

高效的是,

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

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

一般的是前插法

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

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

下面是一个人的'程序:

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;

}

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

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

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

【C语言链表逆序方法技巧】相关文章:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值