zoukankan      html  css  js  c++  java
  • 线性表(逆置)

    链式存储方式

    #include <stdio.h>
    #include<stdlib.h>
    #include <malloc.h>
    struct node            //定义结构体
    {
        int data;
        struct node * next;
    };
    //逆置链表 
    struct node *revercelink(struct node *head)
    {    
        struct node *p, *q, *r;
        r=p=head;
        q=p->next;
        p->next=NULL;
        while(q!=NULL)
        {
            p=q;
            q=q->next;
            p->next=r;
            r=p;
        }
        return p;
    }
    //创建链表 
    struct node *createlink()
    {   
        struct node *p, *q;
        int i=0, a;
        printf("请输入表(以0结束):\n");
           scanf("%d", &a);                    //接收输入的数字 
        p=(struct node *)malloc(sizeof(struct node));     //开辟链表空间 
           if(a==0)
           {
            p=(struct node *)malloc(sizeof(struct node));     //开辟链表空间 
               p->data=a;
               p->next=NULL;
          }
        while(a!=0)
        {
            p=(struct node *)malloc(sizeof(struct node));     //开辟链表空间 
            if(i==0)
            {    p->next=NULL;    }
                else
                {    p->next=q;    }
            p->data=a;        //向链表存数据 
            q=p;
            i++;
            scanf("%d", &a);        //接收输入的数字 
        }
        p=revercelink(p);
        return p;
    }
    //输出链表 
    struct node *output(struct node *head)
    {    
        struct node *p;
        p=head;
        while(p!=NULL)
        {
            printf("%3d", p->data);
            p=p->next;
        }
        printf("\n"); 
        return head;
    }
    //主函数 
    int main()
    {    struct node *head, *p;
        head=createlink();
        printf("原链表为:\n"); 
        head=output(head);
        head=revercelink(head); 
        printf("逆置后的表为:\n"); 
        head=output(head);
        return 0;        
    }
    /*输出示例:
    请输入表(以0结束):
    1 2 3 4 5 6 7 8 9 0
    原链表为:
      1  2  3  4  5  6  7  8  9
    逆置后的表为:
      9  8  7  6  5  4  3  2  1
    请按任意键继续. . . 
    */

    线性表顺序存储:

    #include<stdio.h>
    #include<stdlib.h>
    #include<malloc.h>
    #include<math.h>
    typedef char ElemType;
    typedef struct 
    {
        ElemType a[100];//定义结构体 
        int last;
    }list;
    //创建线性表 
    void creat(list *L)

        int n,i;
        ElemType x;
        printf("请输入数据元素个数(在 0到 100之间):");
        scanf("%d",&n);
        
        for(i=0;i<n;i++)
        {
            printf("a[%d]=",i);
            fflush(stdin);//清除键盘缓冲区 
            scanf("%c",&x);//接收输入的字符 
            L->a[i]=x;
        }
        L->last=n;
        printf("\n");
    }
    //逆置线性表  
    list *reverse(list *L)
    {
        ElemType t;
        int i;
        for(i=0;i<L->last/2;i++)//前一半与后一半交换 
        {
            t=L->a[i];
            L->a[i]=L->a[L->last-i-1];
            L->a[L->last-i-1]=t;
        }
        return L;    
    }
    //输出线性表 
    void out(list *L)
    {
        int i;
        for(i=0;i<L->last;i++)
        {
            printf("a[%d]=",i);
            printf("%c\n",L->a[i]);
        }
        printf("\n");
    }
    //主函数 
    int main()
    {
        list  *L;
        int i;
        L=(list *)malloc(sizeof(list));//开辟空间
        creat( L);
        printf("线性表的原顺序为:\n");
        out(L);
        printf("逆置后的顺序为:\n");
        reverse(L);
        out(L);
        return 0;
    }
    /*输出示例 
    请输入数据元素个数(在 0到 100之间):9
    a[0]=a
    a[1]=b
    a[2]=c
    a[3]=d
    a[4]=e
    a[5]=f
    a[6]=g
    a[7]=h
    a[8]=i

    线性表的原顺序为:
    a[0]=a
    a[1]=b
    a[2]=c
    a[3]=d
    a[4]=e
    a[5]=f
    a[6]=g
    a[7]=h
    a[8]=i

    逆置后的顺序为:
    a[0]=i
    a[1]=h
    a[2]=g
    a[3]=f
    a[4]=e
    a[5]=d
    a[6]=c
    a[7]=b
    a[8]=a

    请按任意键继续. . .
    */ 
  • 相关阅读:
    Digital Video Stabilization and Rolling Shutter Correction using Gyroscope 论文笔记
    Distortion-Free Wide-Angle Portraits on Camera Phones 论文笔记
    Panorama Stitching on Mobile
    Natural Image Stitching with the Global Similarity Prior 论文笔记 (三)
    Natural Image Stitching with the Global Similarity Prior 论文笔记(二)
    Natural Image Stitching with the Global Similarity Prior 论文笔记(一)
    ADCensus Stereo Matching 笔记
    Efficient Large-Scale Stereo Matching论文解析
    Setting up caffe on Ubuntu
    Kubernetes配置Secret访问Harbor私有镜像仓库
  • 原文地址:https://www.cnblogs.com/lanshy/p/2978314.html
Copyright © 2011-2022 走看看