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语言课程的教学分析与设计
C语言作为学院网络技术专业的人门课程,旨在通过锻炼学生的逻辑思维,墙养学生在职业岗位中实际应用的能力.目前,该专业的学生毕业后主要从事网站开发和网络管理等方面的工作,而在这些领域几乎都以C语言作为应用的开发工具.但从历年教学实践来看,教师往往付出的精力多...
-
C++ cin输入流详解
标准输入流是从标准输入设备(键盘)流向程序的数据。在头文件iostream.h中定义了cin、cout、cerr、clog4个流对象,cin是输入流,cout、cerr、clog是输出流。下面是小编为大家整理的C++cin输入流详解,欢迎参考~cin是istream类的对象,它从标准输入设备(键盘)获取数据,程...
-
C语言scanf函数应用问题解答
C语言的输入是由系统提供的库函数完成的。scanf函数是C语言中最常用且功能最强的输入函数,但该函数如使用不慎,就会出现错误或得不到预想的结果。以下结果都是基于VC++6.0运行环境。一、格式说明符和输入项的三对应(类型、个数、顺序)scanf函数格式中的格式说明(“%...
-
C语言的移位操作符使用方法
位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。位移位运算符分为左移和右移两种,均为双目运算符。第一运算对象是移位对象,第二个运算对象是所移的二进制位数。以下是小编为大家搜索整理的C语言的移位操作符使用方法,希望能给大家带来帮...