(C语言)单链表的就地逆置 (40 分)

简介: (C语言)单链表的就地逆置 (40 分)

本题目要求编写一个实现带头结点单链表就地逆置的一个程序。在编写该程序时,要求单独写一个函数来实现单链表的逆置,并编写代码在main函数测试结果。

输入格式:

首先输入一个整数N,表示测试数据的组数,然后是N组测试数据。每组测试数据在一行上先输入数据个数n及n个整数。

输出格式:

对于每组测试,输出逆置后的单链表,每两个数据之间留一个空格,行末不能有多余的空格。

输入样例:

在这里给出一组输入。例如:

1
10 5 8 10 3 9 1 39 28 20 57

输出样例:

在这里给出相应的输出。例如:

57 20 28 39 1 9 3 10 8 5

输入样例:

在这里给出一组输入。例如:

3
10 6 10 3 8 2 7 0 19 30 45
4 28 12 23 67
20 12 15 25 6 4 10 23 3 8 43 2 7 5 16 29 61 30 19 42 38

输出样例:

在这里给出相应的输出。例如:

45 30 19 0 7 2 8 3 10 6
67 23 12 28
38 42 19 30 61 29 16 5 7 2 43 8 3 23 10 4 6 25 15 12

题解

#include <stdio.h>
#include <stdlib.h> 

typedef struct Node{
    int data;
    struct Node *next;
}LNode,*LinkList;

void InsertListHead(LinkList L,int x){
    LinkList s = (LinkList)malloc(sizeof(LNode));
    s->data = x;
    s->next = L->next;
    L->next = s;
}
void PrintList(LinkList L){
    LinkList p = L->next;
    while(p){
        if(p->next!=NULL){
            printf("%d ",p->data);
            p = p->next;
        }else{
            printf("%d",p->data);
            p = p->next;
        }
    }
}

int main(){
    LinkList L = (LinkList)malloc(sizeof(LNode));
    L->next = NULL;
    int n,m,temp;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",&m);
        for(int i=0;i<m;i++){
            scanf("%d",&temp);
            InsertListHead(L,temp);
        }
        PrintList(L);
        if(i!=n-1)
            printf("\n");
        L->next = NULL;
    }
    return 0;
}
相关文章
|
6月前
|
存储 编译器 C语言
【数据结构】C语言实现单链表万字详解(附完整运行代码)
【数据结构】C语言实现单链表万字详解(附完整运行代码)
129 0
|
1月前
|
存储 C语言
C语言单链表实现
一个用C语言编写的简单学生信息管理系统,该系统具备信息输入、成绩计算、排序、删除、查找、修改、保存和读取文件等功能。
21 0
C语言单链表实现
|
2月前
|
存储 算法 C语言
数据结构基础详解(C语言):单链表_定义_初始化_插入_删除_查找_建立操作_纯c语言代码注释讲解
本文详细介绍了单链表的理论知识,涵盖单链表的定义、优点与缺点,并通过示例代码讲解了单链表的初始化、插入、删除、查找等核心操作。文中还具体分析了按位序插入、指定节点前后插入、按位序删除及按值查找等算法实现,并提供了尾插法和头插法建立单链表的方法,帮助读者深入理解单链表的基本原理与应用技巧。
505 6
|
2月前
|
存储 算法 C语言
C语言手撕实战代码_循环单链表和循环双链表
本文档详细介绍了用C语言实现循环单链表和循环双链表的相关算法。包括循环单链表的建立、逆转、左移、拆分及合并等操作;以及双链表的建立、遍历、排序和循环双链表的重组。通过具体示例和代码片段,展示了每种算法的实现思路与步骤,帮助读者深入理解并掌握这些数据结构的基本操作方法。
|
2月前
|
算法 C语言 开发者
C语言手撕实战代码_单链表
本文档详细介绍了使用C语言实现单链表的各种基本操作和经典算法。内容涵盖单链表的构建、插入、查找、合并及特殊操作,如头插法和尾插法构建单链表、插入元素、查找倒数第m个节点、合并两个有序链表等。每部分均配有详细的代码示例和注释,帮助读者更好地理解和掌握单链表的编程技巧。此外,还提供了判断子链、查找公共后缀等进阶题目,适合初学者和有一定基础的开发者学习参考。
|
5月前
|
存储 人机交互 C语言
【C语言项目实战】使用单链表实现通讯录
【C语言项目实战】使用单链表实现通讯录
|
6月前
|
算法 C语言
【算法与数据结构】 C语言实现单链表队列详解2
【算法与数据结构】 C语言实现单链表队列详解
|
6月前
|
C语言
C语言用头插法建立单链表
C语言用头插法建立单链表
26 0
|
6月前
|
存储 算法 C语言
【算法与数据结构】 C语言实现单链表队列详解1
【算法与数据结构】 C语言实现单链表队列详解
|
6月前
|
存储 C语言
C语言之单链表的实现以及链表的介绍
C语言之单链表的实现以及链表的介绍