zoukankan      html  css  js  c++  java
  • 实现顺序表的各种基本运算

    编写一个程序ALGO2-1.CPP,实现顺序表的各种基本运算,并在此基础上设计一个主程序完成如下功能:
    (1)初始化顺序表L
    (2)依次采用尾插法插入a,b,c,d,e元素
    (3)输出顺序表L:
    (4)输出顺序表L长度
    (5)判断顺序表L是否为空
    (6)输出顺序表L的第3个元素
    (7)输出元素a的位置
    (8)在第4个元素位置上插入f元素
    (9)输出顺序表L:
    (10)删除L的第3个元素
    (11)输出顺序表L:
    (12)释放顺序表L
    
    
    #include <stdio.h>
    #include <malloc.h>
    #define MaxSize 50
    typedef char ElemType;
    typedef struct 
    {
    ElemType elem[MaxSize];
       int length;
    } SqList;
    //初始化
    void InitList(SqList *&L)
    {
    L=(SqList *)malloc(sizeof(SqList));
    L->length=0;
    }
    //释放顺序表
    void DestroyList(SqList *L)
    {
    free(L);
    }
    //判断是否为空
    int ListEmpty(SqList *L)
    {
    return(L->length==0);
    }
    //获取长度
    int ListLength(SqList *L)
    {
    return(L->length);
    }
    //输出顺序表
    void DispList(SqList *L)
    {
    int i;
    if (ListEmpty(L)) return;
    for (i=0;i<L->length;i++)
       printf("%c",L->elem[i]);
    printf("\n");
    }
    
    //获取第i个位置上的元素返回给e
    int GetElem(SqList *L,int i,ElemType &e)
    {
    if (i<1 || i>L->length)
       return 0;
    e=L->elem[i-1];
    return 1;
    }
    //返回元素e的位置
    int LocateElem(SqList *L, ElemType e)
    {
    int i=0;
    while (i<L->length && L->elem[i]!=e) i++;
    if (i>=L->length)
       return 0;
    else
       return i+1;
    }
    //把元素e插入到位置i
    int ListInsert(SqList *&L,int i,ElemType e)
    {
    int j;
    if (i<1 || i>L->length+1)
       return 0;
    i--;        /*将顺序表位序转化为elem下标*/
    for (j=L->length;j>i;j--)   /*将elem[i]及后面元素后移一个位置*/
       L->elem[j]=L->elem[j-1];
    L->elem[i]=e;
    L->length++;      /*顺序表长度增1*/
    return 1;
    }
    //删除位置i上的元素
    int ListDelete(SqList *&L,int i,ElemType &e)
    {
    int j;
    if (i<1 || i>L->length)
       return 0;
    i--;        /*将顺序表位序转化为elem下标*/
    e=L->elem[i];
    for (j=i;j<L->length-1;j++)
       L->elem[j]=L->elem[j+1];
    L->length--;
    return 1;
    }
    
    void main()
    {
    SqList *L;
    ElemType e;
    printf("(1)初始化顺序表L\n");
    InitList(L);
    printf("(2)依次采用尾插法插入a,b,c,d,e元素\n");
    ListInsert(L,1,'a');
    ListInsert(L,2,'b');
    ListInsert(L,3,'c');
    ListInsert(L,4,'d');
    ListInsert(L,5,'e');
    printf("(3)输出顺序表L:");
    DispList(L);
    printf("(4)顺序表L长度=%d\n",ListLength(L));
    printf("(5)顺序表L为%s\n",(ListEmpty(L)?"":"非空"));
    GetElem(L,4,e);
    printf("(6)顺序表L的第4个元素=%c\n",e);
    printf("(7)元素a的位置=%d\n",LocateElem(L,'a'));
    printf("(8)在第3个元素位置上插入f元素\n");
    ListInsert(L,3,'f');
    printf("(9)输出顺序表L:");
    DispList(L);
    printf("(10)删除L的第4个元素\n");
        ListDelete(L,4,e);
    printf("(11)输出顺序表L:");
    DispList(L);
    printf("(12)释放顺序表L\n");
    DestroyList(L);
    }
  • 相关阅读:
    一道压强题
    考试习惯的审题+习题+电脑存放目录记录
    产品需求分类及KANO模型需求排序学习
    马斯洛需求层次理论及其新拓展学习笔记
    12-JQuery学习之bind绑定事件
    11-JQuery学习之ready预加载事件
    09-JQuery学习之删除元素
    10-JQuery学习之遍历元素
    08-JQuery学习之创建元素和添加元素
    06-JQuery学习之操作元素的样式
  • 原文地址:https://www.cnblogs.com/tianyuxuepiao/p/2720443.html
Copyright © 2011-2022 走看看