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. 详解 ASP.NET并行,异步,多线程

    最近在学习.net4以上版本新特性的时候,发现在异步这方面提供了很多好玩的.以下Mark 2篇好文,温故而知新! http://www.cnblogs.com/wisdomqq/archive/201 ...

  2. Newtonsoft.Json的使用

    JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互.和 XML 一样,JSON 也是基于纯文本的数据格式 ...

  3. DTMF Stresstesting

    import threading,time,serial,sys from random import randrange   port_snd=14 port_recv=2 recnt=0 ser_ ...

  4. linux:档案权限

    一.例如:-rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc 详细: 1.-rw-r--r--:档案类型和权限(总共十个栏位) 1.1:第一个栏位代表 ...

  5. TIJ——Chapter Two:Everything Is an Object

    If we spoke a different language, we would perceive a somewhat different world. Ludwig Wittgenstein( ...

  6. M面经Prepare: Positive-Negative partitioning preserving order

    Given an array which has n integers,it has both positive and negative integers.Now you need sort thi ...

  7. Lintcode: Nth to Last Node in List

    Find the nth to last element of a singly linked list. The minimum number of nodes in list is n. Exam ...

  8. zabbix服务器监控suse系统教程

    zabbix服务器监控suse系统教程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 花了近一个星期才学会了如何监控window和linux主机的基本信息以及报价情况(我已经把笔记 ...

  9. HTML基础-- 标签、表格

    <html>    --开始标签 <head> 网页上的控制信息 <title>页面标题</title> </head> <body& ...

  10. Activity之间的数据传递

    最常用的Activity之间的数据传递. btnStartAty1.setOnClickListener(new View.OnClickListener() { @Override public v ...