2989: 顺序表基本运算(线性表)

时间限制: 1 Sec  内存限制: 128 MB

提交: 1  解决: 1

题目描述

编写一个程序,实现顺序表的各种基本运算(假设顺序表的元素类型为char),主函数已给出,请补充每一种方法。

1、初始化顺序表L;

2、采用尾插法依次插入元素a,b,c,d,e;

3、输出顺序表L;

4、输出顺序表L的长度;

5、判断顺序表是否为空;

6、输出顺序表L的第三个元素;

7、输出元素a的位置;

8、在第四个元素位置插入元素f;

9、输出顺序表L;

10、删除L的第三个元素;

11、输出顺序表L;

12、释放顺序表L;

顺序表的定义为

typedef struct
{
    ElemType data[SizeMax];
    int length;
} SqList;
  
 
主函数:
int main()
{
    SqList *L;
    InitList(L);                            //初始化顺序表
    ElemType a,b,c,d,e;
    scanf("%c %c %c %c %c%*c",&a,&b,&c,&d,&e);
    Insert(L,a);
    Insert(L,b);
    Insert(L,c);
    Insert(L,d);
    Insert(L,e);                            //使用尾插法插入元素a,b,c,d,e
    Print(L);                               //输出顺序表
    PrintLength(L);                         //输出顺序表长度
    if(SqNull(L))
         printf("顺序表不为空\n");
    else printf("顺序表为空\n");            //判断顺序表是否为空
    PrintData(L,3);                         //输出第三个元素
    printf("元素a的位置:%d\n",Find(L,a));  //输出元素a的位置
    ElemType f;
    scanf("%c",&f);
    Insertinto(L,4,f);                      //将f插入到第四个位置
    Print(L);                               //输出顺序表
    Delete(L,3);                            //删除第三个元素
    Print(L);                               //输出顺序表
    free(L);                                //释放内存
    return 0;
}

输入

第一行输入五个元素a,b,c,d,e;接下来输入元素f;请根据题目编写算法。

输出

样例输入

  1. 1 2 3 4 5
  1. 6

样例输出

  1. 1 2 3 4 5
  2. 5
  3. 顺序表不为空
  4. 3
  5. 元素a的位置:1
  6. 1 2 3 6 4 5
  7. 1 2 6 4 5

提示

请使用C++编译并提交

迷失在幽谷中的鸟儿,独自飞翔在这偌大的天地间,却不知自己该飞往何方……

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define SizeMax 10
  4. typedef char ElemType;
  5. typedef struct
  6. {
  7. ElemType data[SizeMax];
  8. int length;
  9. } SqList;
  10. void InitList(SqList *&L)
  11. {
  12. L=(SqList*)malloc(sizeof(SqList));
  13. L->length=0;
  14. }
  15. void Insert(SqList *&L,ElemType n)
  16. {
  17. L->data[L->length]=n;
  18. L->length++;
  19. }
  20. void Print(SqList *L)
  21. {
  22. for(int i=0; i<L->length; i++)
  23. printf(i!=L->length-1?"%c ":"%c\n",L->data[i]);
  24. }
  25. void PrintLength(SqList *L)
  26. {
  27. printf("%d\n",L->length);
  28. }
  29. bool SqNull(SqList *L)
  30. {
  31. if(L->length)return 1;
  32. return 0;
  33. }
  34. void PrintData(SqList *L,int n)
  35. {
  36. if(L->length<n)return;
  37. printf("%c\n",L->data[n-1]);
  38. }
  39. int Find(SqList *L,ElemType a)
  40. {
  41. for(int i=0; i<L->length; i++)
  42. if(L->data[i]==a)return i+1;
  43. return 0;
  44. }
  45. void Insertinto(SqList *&L,int n,ElemType f)
  46. {
  47. for(int i=L->length; i>=n; i--)
  48. L->data[i]=L->data[i-1];
  49. L->data[n-1]=f;
  50. L->length++;
  51. }
  52. void Delete(SqList *&L,int n)
  53. {
  54. for(int i=n-1; i<L->length-1; i++)
  55. L->data[i]=L->data[i+1];
  56. L->length--;
  57. }
  58. int main()
  59. {
  60. SqList *L;
  61. InitList(L); //初始化顺序表
  62. ElemType a,b,c,d,e;
  63. scanf("%c %c %c %c %c%*c",&a,&b,&c,&d,&e);
  64. Insert(L,a);
  65. Insert(L,b);
  66. Insert(L,c);
  67. Insert(L,d);
  68. Insert(L,e); //使用尾插法插入元素a,b,c,d,e
  69. Print(L); //输出顺序表
  70. PrintLength(L); //输出顺序表长度
  71. if(SqNull(L))
  72. printf("顺序表不为空\n");
  73. else printf("顺序表为空\n"); //判断顺序表是否为空
  74. PrintData(L,3); //输出第三个元素
  75. printf("元素a的位置:%d\n",Find(L,a)); //输出元素a的位置
  76. ElemType f;
  77. scanf("%c",&f);
  78. Insertinto(L,4,f); //将f插入到第四个位置
  79. Print(L); //输出顺序表
  80. Delete(L,3); //删除第三个元素
  81. Print(L); //输出顺序表
  82. free(L); //释放内存
  83. return 0;
  84. }

YTU 2989: 顺序表基本运算(线性表)的更多相关文章

  1. c++ 用模板类实现顺序储存的线性表

    首先要注意的一点是模板类在VS中编译时如果将定义和声明分开会出现无法解析的问题,所以一般比较常见的解决的办法是将声明和定义放在同一个头文件中然后统一的调用,下面就是用模板类实现线性表的编写 #prag ...

  2. 将非递减有序排列(L L1)归并为一个新的线性表L2 线性表L2中的元素仍按值非递减

    #include "stdio.h"#include "stdlib.h"#include "function.h"void main(){ ...

  3. 线性表源码分享(c++),包含顺序表、单链表、循环链表、双向链表

    ---恢复内容开始--- 我是一个c++和数据结构的初学者,本文主要是把清华大学出版社的数据结构(用面向对象方法与c++语言描述)(第2版)这本书中第二章线性表的源码抄下来,在学习的过程中有助于加深印 ...

  4. 2019-02-03 线性表的顺序储存结构C语言实现

    #include<cstdio> #define MAXSIZE 20 typedef int Elemtype; //Elemtype类型根据实际情况而定,这里取int typedef ...

  5. Java数据结构之线性表(2)

    从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...

  6. Java数据结构之线性表

    从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...

  7. 线性表的顺序存储结构——java

    线性表的顺序存储结构:是指用一组地址连续的存储单元一次存放线性表的元素.为了使用顺序结构实现线性表,程序通常会采用数组来保存线性中的元素,是一种随机存储的数据结构,适合随机访问.java中ArrayL ...

  8. 【Java数据结构学习笔记之一】线性表的存储结构及其代码实现

    应用程序后在那个的数据大致有四种基本的逻辑结构: 集合:数据元素之间只有"同属于一个集合"的关系 线性结构:数据元素之间存在一个对一个的关系 树形结构:数据元素之间存在一个对多个关 ...

  9. Python线性表——单链表

    1. 线性表简介 线性表是一种线性结构,它是由零个或多个数据元素构成的有限序列.线性表的特征是在一个序列中,除了头尾元素,每个元素都有且只有一个直接前驱,有且只有一个直接后继,而序列头元素没有直接前驱 ...

随机推荐

  1. 关于Android Context一些总结

    1.首先什么是context? 文档语焉不详,说是resource什么的,反正是没看懂,实际上可以认为它是一个指向parent对象的指针,受到那个parent对象的控制. 2.为什么需要context ...

  2. Java基础之一组有用的类——使用正则表达式查找和替换(SearchAndReplace)

    控制台程序. 使用正则表达式执行查找和替换操作,只需要调用Matcher对象的find()方法,就可以调用appendReplacement()方法来替换匹配的子序列.在提供给方法的新StringBu ...

  3. Python:使用pymssql批量插入csv文件到数据库测试

    并行进程怎么使用? import os import sys import time def processFunc(i): time.sleep(10-i) print i if __name__= ...

  4. ubuntu14.04安装eclipse

    1.安装jdk7.x,参考上篇<Linux14.04安装JDK> 2下载eclipse.tar 3.sudo tar -zxvf eclipse-x-x-.tar.gz mv eclips ...

  5. DNS域名解析

    之前用的是DNSPOD.CN的解析,没什么问题. 因为想根据不同国家做服务器解析(欧洲,亚洲,美国) 然后就转到DNSPOD.com里面有按国家来分的. 但是欧洲那边反应,每天断断续续会不能访问网站. ...

  6. C++字符串(String)

    字符串的声明: string s; string str="abcdefg"; char ch[]="abcdefg"; //使用string类型初始化另一个s ...

  7. C#: 集合

    摘自http://www.cnblogs.com/kissdodog/archive/2013/01/29/2882195.html 先来了解下集合的基本信息 1.BCL中集合类型分为泛型集合与非泛型 ...

  8. html5文件上传

    <!DOCTYPE html><html><head> <title>Html5 Ajax 上传文件</title></head> ...

  9. 夺命雷公狗mongodb之----mongodb---3---比较操作符

    $lt    <  less than 小于 $lte   <=  less than and equal 小于等于 $gt    >   greater than 大于 $gte ...

  10. redis面试题总结

    1. 使用redis有哪些好处? (1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) (2) 支持丰富数据类型,支持string,li ...