[C]C语言基础巩固专题 链表之(链表反转)
链表是c语言中很重要的数据结构,是考察一个程序员的基本功的手段,之前在一家公司面试时就问到了
实现一个链表的反转,当时就是没有很好冷静的思考,今天在这里写出来,共勉!
基本算法:
1. 判断是否为空,如果为空,返回NULL
2. 否则说明至少有一个节点,那么
p2指向最后一个节点,p1指向前一个节点,
把p2指向的节点的next 置为NULL(因为这个点将是链表的末尾节点)
3. 进入循环
1)让前一个节点和后一个节点重新建立连接;
2)P2 往前移,p2=p1;
3)P1 往前移,p1=p1->next。
后两步是为下一个循环做准备。
4. 当p1为空时,p2指向的是最后一个节点,那么返回p2.
基本代码如下:
struct Node
{
int num;
Node * next;
};
Node * reverse(Node * head)
{
if(head==NULL)
{
return NULL;
}
Node * p1,p2;
p2=head;
p1=head->next;
p2->next=NULL;
while(p1)
{
p1->next=p2;
p2=p1;
p1=p1->next;
}
return p2;
}
相关文档:
Boss说,要看OpenGL,看了快一个月,总算出了个像样的东西,用C写了个3D迷宫,
虽然只有350行
代码,不过边学边写,足足写了一周时间,还是小有成就感的,活活活!
&n ......
http://os.51cto.com 2008-03-21 11:15 佚名 赛迪网
摘要:学会使用vim/emacs,vim/emacs是linux下最常用的源码编辑器,不光要学会用它们编辑源码,还要学会用它们进行查找、定位、替换等。新手的话推荐使用vim,这也是我目前使用的文本编辑器。
标签:Linux C语言 编程
Or ......
http://docs.google.com/View?docid=ajbgz6fp3pjh_2dwwwwt#_38239340844832237
It is not about optimization.
The whole idea of using 'do/while' version
is to make a macro which will
expand into a regular statement, not into a
compound statement. This is
done in order to make the use of function-s ......
GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)
和类型属性(Type Attribute)。
__attribute__书写特征是:__attribute__前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attribute__参数。
__at ......
对于很多初学者来说,往往觉得回调函数很神秘,很想知道回调函数的工作原理。本文将要解释什么是回调函数、它们有什么好处、为什么要使用它们等等问题,在开始之前,假设你已经熟知了函数指针。
什么是回调函数?
简而言之,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另 ......