链表元素的逆序输出

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3
 4 #define ElemType int
 5 #define N 5                                      //定义链表的结点数目
 6 typedef struct Node
 7 {
 8     ElemType data;
 9     struct Node *next;
10 }Node;
11 typedef struct Node *LinkList;
12
13
14
15 Node* CreatList(Node *La,int n)
16 {
17     int i;
18     struct Node *s;
19     La = (LinkList)malloc(sizeof(Node));
20     La->next = NULL;                         //初始化
21     for(i = 1;i <= n;i++)
22     {
23         s = (LinkList)malloc(sizeof(Node));
24         scanf("%d",&(s->data));
25         s->next = La->next;
26         La->next = s;                        //利用头插法构造链表
27     }
28
29     return La;
30 }
31 //函数值调换
32 int  SortList(Node *Lb,int n)
33 {
34     int i;
35     int a[n];
36     for(i = 0;i < n;i++)
37     {
38         Lb = Lb->next;
39         a[i] = Lb->data;
40     }
41     for(i = n-1;i >= 0;i--)
42     {
43         printf("%3d",a[i]);
44     }
45     return 1;
46 }
47 int main(int argc, char *argv[])
48
49 {
50     int i;
51     struct Node *L,*p;
52     L = CreatList(L,N);
53     p = L;
54     printf("the data is:\n");
55     for(i = 1;i <= N;i++)
56     {
57         p = p->next;
58         printf("%3d",p->data);
59     }
60     printf("\nAfter sorted,the data is\n");
61     SortList(L,N);
62     getch();
63 //    system("pause");
64     return 0;
65 }
时间: 2024-10-26 10:47:55

链表元素的逆序输出的相关文章

java版的单向链表的逆序输出

将单向链表逆序输出,方法有三种: a.遍历链表,将每个节点的内容存入一个数组中,然后逆序输出数组(最简单的做法) b.使用栈来逆序输出 c.直接将链表逆序然后输出(本文采用的方法) 先介绍算法: 1). 若链表为空或只有一个元素,则直接返回: 2). 设置两个前后相邻的指针p,q. 将p所指向的节点作为q指向节点的后继: 3). 重复2),直到q为空 4). 调整链表头和链表尾 示例:以逆序A->B->C->D为例,图示如下 package com.moluo.shujujiegou;

如何实现一个高效的单向链表逆序输出?(详解)

需要考虑因素,高效应权衡多方面因素 数据量是否会很大 空间是否有限制 原始链表的结构是否可以更改 时间复杂度是否有限制 一个链表节点需要输出的元素有多个,例如链表中存的是自定义对象,有多个字段 题目. 01. 先学着实现一个简单的Java版的单项链表构建任意长度的任意数值的链表, 头插法,顺序遍历输出链表 package com.szs.list; /** * 单链表 * @author Administrator * */ public class MyLinkedList { public

c语言:对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出。

对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出. 解:程序: #include<stdio.h> int main() { int i, a[10]; for (i = 0; i <= 9; i++) { a[i] = i; } for (i = 9; i >= 0; i--) { printf("%3d", a[i]); } printf("\n"); return 0; } 结果: 9  8  7  6 

剑指Offer03 逆序输出链表

多写了个逆序链表 1 /************************************************************************* 2 > File Name: 03_Pirnt_LinkList.c 3 > Author: Juntaran 4 > Mail: [email protected] 5 > Created Time: 2016年08月24日 星期三 02时04分25秒 6 ***************************

[华为机试练习题]24.删除链表中的反复节点、剩余节点逆序输出

题目 描写叙述: 题目描写叙述: 输入一个不带头节点的单向链表(链表的节点数小于100),删除链表中内容反复的节点(反复的节点所有删除),剩余的节点逆序倒排. 要求实现函数: void vChanProcess(strNode * pstrIn,strNode * pstrOut); [输入] pstrIn:输入一个不带头节点的单向链表 [输出] pstrOut:删除内容反复的节点(反复的节点所有删除).剩余节点逆序输出(不带头节点,链表第一个节点的内存已经申请). [注意]仅仅须要完毕该函数功

单链表逆序或者逆序输出

分为两种情况,一种是只逆序输出,实际上不逆序:另一种是把链表逆序. ********************逆序输出*********************** 1 #include<iostream> 2 #include<stack> 3 #include<assert.h> 4 using namespace std; 5 6 7 typedef struct node{ 8 int data; 9 node * next; 10 }node; 11 12 //

[华为机试练习题]24.删除链表中的重复节点、剩余节点逆序输出

题目 描述: 题目描述: 输入一个不带头节点的单向链表(链表的节点数小于100),删除链表中内容重复的节点(重复的节点全部删除),剩余的节点逆序倒排. 要求实现函数: void vChanProcess(strNode * pstrIn,strNode * pstrOut); [输入] pstrIn:输入一个不带头节点的单向链表 [输出] pstrOut:删除内容重复的节点(重复的节点全部删除),剩余节点逆序输出(不带头节点,链表第一个节点的内存已经申请). [注意]只需要完成该函数功能算法,中

链表逆序输出 ---九度1511

题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包含一组测试样例. 每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点.第一行是链表第一个节点的值,依次类推.当输入到-1时代表链表输入完毕.-1本身不属于链表. 输出: 对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行. 样例输入: 1 2 3 4 5 -1 样例输出: 5 4 3 2 1 解题思路: 方法一:直接用数组存储数据,然后反向输出,不过好像通不过.为什么? 方法二:利用

编程题:将数字0~5放入一个整型数组,并逆序输出数组

#include<stdio.h> void main() { int i,a[5]; for(i=0;i<5;i++)         /*给数组中元素赋值*/ a[i]=i; for(i=4;i>=0;i--)          /*逆序输出数组中元素值*/ printf("%3d",a[i]); printf("\n"); } 编程题:将数字0~5放入一个整型数组,并逆序输出数组,布布扣,bubuko.com