线性表的就地逆置(耿2.9)

线性表的就地逆置

题目描述

试分别以不同的存储结构实现线性表的就地逆置算发,即在原表的储存空间将线性表(a_1,a_2,...,a_n)逆置为(a_n,a_{n-1},...,a_1)
以一位数组作存储结构。
以单链表作存储结构。

输入

第一行输入线性表元素个数elenum;(0<elenum<1000)
第二行输入elenum个数字,作为线性表中的元素(a_1,a_2,...,a_n)

输出

分两行分别输出要求(1)和要求(2)的线性表逆置结果(a_n,a_{n-1},...,a_1)

输入样例

5
2 5 3 7 15

输出样例

15 7 3 5 2
15 7 3 5 2

代码

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

typedef struct tagLNode
{
    int data;
    struct tagLNode *next;
}LNode,*Linklist;

void Create(Linklist *L,int A[],int n) //头插法创建链表(数据逆置)
{
    int i;
    Linklist s;

    *L=(Linklist)malloc(sizeof(LNode));
    (*L)->next=NULL;

    for(i=0;i<n;i++)
    {
        s=(Linklist)malloc(sizeof(LNode));
        s->data=A[i];
        s->next=(*L)->next;
        (*L)->next=s;
    }
}

void Output(Linklist L)
{
    Linklist p=L->next;
    while(p!=NULL)
    {
        printf("%d ",p->data);
        p=p->next;
    }
    printf("\n");
}

int main()
{
    int L[1000],elenum,i;
    Linklist L1;

    scanf("%d",&elenum);

    for(i=0;i<elenum;i++)
        scanf("%d",&L[i]);
    Create(&L1,L,elenum);

    for(i=elenum-1;i>=0;i--)
        printf("%d ",L[i]);
    printf("\n");
    Output(L1);

    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转自:http://blog.csdn.net/oreo_go/article/details/52116214 ...
    YYT1992阅读 1,029评论 0 4
  • 大学的时候不好好学习,老师在讲台上讲课,自己在以为老师看不到的座位看小说,现在用到了老师讲的知识,只能自己看书查资...
    和珏猫阅读 1,475评论 1 3
  • 今天搬宿舍,因为组装床的时候发生一点错误,导致人事经理和一员工发生了一点冲突。 因为是上下铺,结果员工把梯子安反了...
    江白鸽阅读 313评论 0 0
  • 结婚这几年,我跟老公做着一点小本生意,日子过得还算惬意,但时间久了就想换种生活方式,开阔眼界,但过起领工资的日子真...
    nuli人阅读 67评论 0 0
  • dart 安装: 1.在mac终端中首先安装 HomeBrew 包管理工具https://brew.sh/ind...
    honestpan阅读 847评论 0 1