建立一个链表,然后将其中的元素进行反转。
#include<stdio.h>
#include<stdlib.h>
struct Node
{
int data;
struct Node *next;
};
void display_link(struct Node *head)
{
struct Node *p;
for(p = head; p != NULL; p = p->next) {
printf("%4d",p->data);
}
printf("\n");
}
struct Node * new_link()
{
struct Node *head = NULL, *p1 = NULL ,*p2 = NULL;
int data;
int i = 1;
printf("enter the data:\n");
p1 = (struct Node * )malloc(sizeof(struct Node));
while(1) {
scanf("%d",&p1->data);
if(head == NULL) {
head = p1;
}
p2 = p1;
if(i == 10) {
break;
}
p1 = (struct Node*)malloc(sizeof(struct Node));
p2->next = p1;
i++;
}
p2->next = NULL;
return head;
}
struct Node *transvert_link(struct Node *head)
{
struct Node *p,*p2,*p3;
p = head;
p2 = head->next;
p3 = head->next->next;
while(p3 != NULL) {
p2->next = p;
p = p2;
p2 = p3;
p3 = p3->next;
}
p2->next = p;
head->next = NULL;
return p2;
}
int main(void)
{
struct Node *head;
head = new_link();
printf("\n the data before transvert is:\n");
display_link(head);
head = transvert_link(head);
printf("\n the data after transvert is:\n");
display_link(head);
return 0;
}
分享到:
相关推荐
C语言数据结构 link 链表反转的实现 链表反转,示例如下: 偶数个输入:a->b->c->d->e->f 偶数个输出:e->f->c->d->a->b or 奇数个输入:a->b->c->d->e->f->g 偶数个输出:g->e->f->c->d->a->b #include #...
第1章 课程导学对课程整体进行介绍,让您切实感受到前端工程师学习数据结构与算法的必要性。 1-1 课程导学 试看 1-2 学习姿势 1-3 说明与承诺第2章 基础算法之“字符串类”字符串作为JS最基本的数据类型,掌握好字符...
数据结构与算法 排序算法 内排序 八大基础排序 选择排序 简单选择排序 思想 每次选择最大的数插入到末尾中 做法 外层for循环控制次数 内层for循环找出最大的值的角...
本文实例讲述了C++数据结构与算法之反转链表的方法。分享给大家供大家参考,具体如下: 算法概述:要求实现将一条单向链表反转并考虑时间复杂度。 算法分析: 数组法(略): 将列表元素逐个保存进数组,之后再逆向...
链表的反转是一个很常见、很基础的数据结构题,输入一个单向链表,输出逆序反转后的链表,如图:上面的链表转换成下面的链表。实现链表反转有两种方式,一种是循环迭代,另外一种方式是递归。 第一种方式:循坏...
## 链表* 实现单链表、循环链表、双向链表,支持增删操作* 实现单链表反转* 实现两个有序的链表合并为一个有序链表* 实现求链表的中间结点 ## 栈* 用数组实现一个顺序栈* 用链表实现一个链式栈* 编程模拟实现一个...
适合人群:学习算法和数据结构的程序员或学生,尤其是想系统学习链表操作的人。 能学到什么:掌握链表虚拟头节点设置方法;练习链表基本操作函数如增删查改;学习链表反转等经典算法的代码实现。 阅读建议:链表算法需要...
你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-linked-list 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请...
C#,递归方法实现双向链表(Doubly Linked List)的反转(Reverse)算法与源代码 递归算法的执行过程分递推和回归两个阶段。在递推阶段,把较复杂的问题(规模为n)的求解推到比原问题简单一些的问题(规模小于n)的...
根据链表数据结构的知识,进行初步练习,从单链表的反转、环的检测、两个有序链表的合并、判断单向链表是否是回文字符串四个题目着手,分别进行代码实现。 首先定义单链表类: # 结点类 class Node(object): def _...
算法大全-面试题-链表-栈-二叉树-数据结构.docx 一、单链表 目录 1.单链表反转 2.找出单链表的倒数第4个元素 3.找出单链表的中间元素 4.删除无头单链表的一个节点 5.两个不交叉的有序链表的合并 6.有个二级...
本项目主要使用Java实现各种经典常用数据结构及其算法,包括但不仅限于链表、栈,队列,树,图等经典数据结构,持续更新中... 目前,该项目具体包括如下内容: 单向链表的数据结构及其相关算法:单向链表结构包含两...
《数据结构与算法之美》练习 数组 动态扩容数组 Java实现 及 及 大小固定数组 Java实现 及 及 两个有序数组合并为一个有序数组 Java 实现 : 空间复杂度 O(1);时间复杂度 最好 O(m + n) 最坏 O(mn) 空间复杂度 O(m)...
大厂前端面试算法|# 数据结构和算法 数据结构和算法,是大厂前端面试的“拦路虎”,很多同学都望而生畏。其实如果了解常用数据结构,掌握基本的算法思维,就不能应对。本章将通过多个面试题,为你讲解算法面试题的...
数据结构与算法 旋转矩阵 零矩阵(编写一种算法,若 M × N 矩阵中某个元素为 0,则将其所在的行与列清零。) 队列-实现 栈-实现 最小栈(在常数时间内检索到最小元素的栈) 有效的括号(给定一个只包括 '(',')','...
看看那些常用的数据结构,如堆栈、链表、树等,并熟悉对这些数据结构的最常见操作(插入、删除、反转、修改、访问元素)及其时间大 O 符号的复杂性。 至少选一门算法课程,这是我在乔治亚理工学院选修的课程的在线...
数据结构和算法必知必会的50个代码实现 微信搜索我的公众号“小争哥”,或者微信扫描以下二维码关注 关注微信公众号,回复“ PDF”获取独家算法资料。 前Google工程师,10万人跟着学的《数据结构和算法之美》《设计...
数组和链表(使用场景和反转链表) 数组和链表.pdf
问题:实现单链表反转 问题:实现两个有序的链表合并为一个有序链表 问题:实现求链表的中间结点 栈 问题:用数组实现一个顺序栈 问题:用链表实现一个链式栈 队列 问题:用数组实现一个顺序队列 问题:用...