网站首页 语言 会计 电脑 医学 资格证 职场 文艺体育 范文
当前位置:书香门第 > 计算机 > C语言

C语言链表逆序方法技巧

栏目: C语言 / 发布于: / 人气:8.7K

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;

}

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

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

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