web前端
数据库
编程语言
搜索技术
关于本站
登录
登 录
下次自动登录
学步园
返回顶部
查看留言
转到底部
现在的位置:
首页
> 综合 > 正文
RSS
单链表的逆向反转(V1.0)
2018年04月09日
⁄ 综合
⁄ 共 908字 ⁄ 字号
小
中
大
⁄
评论关闭
链表的逆转
算法
是常规招聘中的考题,比较灵活,现在给出整个实现的代码,仅供各位参考~~~~~~~~~
该算法暂时只考虑了实现功能,未进行优化,未释放指针。
该算法主要的思想是:设置三个节点分别指向原来链表的前三个节点,然后依次移动三个指针,直至到达尾节点。
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Node{
int key;
struct Node* next;
};
Node *Reverselist(Node *head)
{
//头结点为空或者只有一个结点,直接返回该结点
if(NULL==head||NULL==head->next)
{
return head;
}
//定义三个Node类型指针变量,便于交换指针
Node *p1=head; //指向头结点
Node *p2=p1->next; //指向第一个结点的下一个结点
Node *p3=p2->next;//指向第二个结点的下一个结点
p1->next=NULL; //先把第一个结点的下一个结点指向NULL
while(NULL!=p3)
{
p2->next=p1;
p1=p2;
p2=p3;
p3=p3->next;
}
//当p3为null时
p2->next=p1; //第二个结点指向p1
head=p2; //头结点就是p2
return head;
}
int main()
{
Node *node,*first,*temp;
first=NULL;
while (1)
{
node=(Node* )malloc(sizeof(Node));
scanf("%d",&node->key);
if (node->key<=0)
break;
else
{
if(first==NULL)
{
first=node;
first->next=NULL;
temp=first;
}
else
{
temp->next=node;
temp=node;
temp->next=NULL;
}
}
}
temp=Reverselist(first);
while(temp!=NULL)
{
printf("%d ",temp->key);2
temp=temp->next;
}
return 0;
}
返回
【上篇】
LeetCode | Palindrome Partitioning(将一个子串划分成回文子串)
【下篇】
一些重要的算法
作者:
bleaching
该日志由 bleaching 于6年前发表在综合分类下,最后更新于 2018年04月09日.
转载请注明:
单链表的逆向反转(V1.0) | 学步园
+复制链接
抱歉!评论已关闭.
书签
招生
白云飘飘网
青岛房产网
最新文章New
网站优化可以收获更好的收益
robots在网页开发中起到了一定的
SEO引擎优化可以更好的方便搜索
Dreamweaver教程很实用,值得学习
很多的photoshop教程值得学习,你
编程语言很重要,特别是对于计算
数据库非常常见,也非常实用!
H5指的是第5代html,不同于传统企
HTML是什么,该怎么制作?
本站推荐
为什么PHP的吉祥物是一头大象
作业的提交和监控(二)
作业的提交和监控(一)
Boost – Function 分析
奇技淫巧 – C/C++ 宏自身
模板的 SFINAE 原则
Octopress 和 Git 的结合
Electric-fence 介绍