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 2 3 4 5
6

样例输出

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

提示

请使用C++编译并提交

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

#include <stdio.h>
#include <stdlib.h>
#define SizeMax 10
typedef char ElemType;
typedef struct
{
ElemType data[SizeMax];
int length;
} SqList;
void InitList(SqList *&L)
{
L=(SqList*)malloc(sizeof(SqList));
L->length=0;
}
void Insert(SqList *&L,ElemType n)
{
L->data[L->length]=n;
L->length++;
}
void Print(SqList *L)
{
for(int i=0; i<L->length; i++)
printf(i!=L->length-1?"%c ":"%c\n",L->data[i]);
}
void PrintLength(SqList *L)
{
printf("%d\n",L->length);
}
bool SqNull(SqList *L)
{
if(L->length)return 1;
return 0;
}
void PrintData(SqList *L,int n)
{
if(L->length<n)return;
printf("%c\n",L->data[n-1]);
}
int Find(SqList *L,ElemType a)
{
for(int i=0; i<L->length; i++)
if(L->data[i]==a)return i+1;
return 0;
}
void Insertinto(SqList *&L,int n,ElemType f)
{
for(int i=L->length; i>=n; i--)
L->data[i]=L->data[i-1];
L->data[n-1]=f;
L->length++;
}
void Delete(SqList *&L,int n)
{
for(int i=n-1; i<L->length-1; i++)
L->data[i]=L->data[i+1];
L->length--;
}
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;
}

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. MySQL: ERROR13(HY000):Can't get stat of

    在mysql中load data数据 mysql> load data infile '/home/a.txt' into table table_a;ERROR 13 (HY000): Can ...

  2. JS语法部分-数组

    数组的长度是动态变化的,里面可以防止任意类型的元素 var a=new Array() 数组元素的复制:a[0]=123        a[2]=456 数组的取值:a[i] 数组的属性:  a.le ...

  3. csuoj 1390: Planting Trees

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1390 1390: Planting Trees Time Limit: 1 Sec  Memory ...

  4. Java基础(5):试用Array类对数据进行操作(Sort和toString方法)

    Arrays 类是 Java 中提供的一个工具类,在 java.util 包中.该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序.搜索等 1. 排序 语法:  Arrays.sort(数 ...

  5. 找到多个与名为“Index”的控制器匹配的类型的解决方法!

    “/”应用程序中的服务器错误. 找到多个与名为“Index”的控制器匹配的类型.如果为此请求(“{controller}/{action}/{id}”)提供服务的路由在搜索匹配此请求的控制器时没有指定 ...

  6. Workflow Mailer Notifications设置

    参考:http://www.docin.com/p-651716490.html http://www.360doc.com/content/12/0218/15/3200886_187602886. ...

  7. Java 中的System.exit

    在java 中退出程序,经常会使用System.exit(1) 或 System.exit(0). 查看System.exit()方法的源码,如下 /** * Terminates the curre ...

  8. [CrunchBang]Linux系统下必要的中文字体

    sudo apt-get install ttf-droid ttf-wqy-zenhei xfonts-wqy ttf-wqy-microhei ttf-arphic-ukai ttf-arphic ...

  9. 【Winfrom】简单的焦点设置问题

    原文: http://blog.csdn.net/zlwzlwzlw/article/details/8573921 初始的时候希望指定控件的焦点 不能用load事件 要用Activated事件才行 ...

  10. Linux/Unix笔记本

    Linux介绍 Linux入门——个人感想 Google怎么用linux 初入Linux Windows XP硬盘安装Ubuntu 12.04双系统图文详解 实例讲解虚拟机3种网络模式(桥接.nat. ...