在顺序存储结构实现基本操作:初始化、创建、插入、删除、查找、遍历、逆置、合并运算。

运行示例:

请输入线性表La的长度:
请输入线性表La中的元素(共5个) *** 此时线性表La中的元素 *** *** 插入数据 ***
请输入要插入的位置:
请输入要插入的元素:
*** 此时线性表La中的元素 *** *** 删除数据 ***
请输入要删除元素的位置:
*** 此时线性表La中的元素 *** *** 查找数据 ***请输入要查找的元素:
顺序表中没有3这个元素!
*** 顺序表逆置 ***
*** 此时线性表La中的元素 *** *** 初始化线性表Lb ***
请输入线性表Lb的长度:
请输入线性表Lb中的元素(共5个) *** 此时线性表Lb中的元素 *** *** 合并线性表La 和 Lb ***
*** 此时线性表Lc中的元素 ***
//#########################################################
// 顺序表上的基本操作实现
// 初始化、创建、插入、删除、查找、遍历、逆置、合并
//#########################################################
#define _CRT_SECURE_NO_DEPRECATE
#include<stdio.h> #define MAX_SIZE 100 typedef int ElemType; //定义结构体SeqList
typedef struct
{
ElemType list[MAX_SIZE];
int size;
} SeqList; //初始化顺序表
void ListInit(SeqList *L)
{
//定义初始元素的个数
L->size = ;
} //插入数据元素
void ListInsert(SeqList *L, int i, ElemType e)
{
int j;
if (L->size >= MAX_SIZE)
{
printf("顺序表已满,无法插入!\n");
}
else if (i < || i > L->size)
{
printf("i must be 0 - %d\n", L->size);
}
else
{
for (j = L->size; j > i - ; j--)
{
L->list[j] = L->list[j - ];
}
L->list[i - ] = e;
L->size++;
}
} //删除数据元素
void ListDelete(SeqList *L, int i)
{
int j = ;
if (L->size <= )
{
printf("顺序表中已空!\n");
}
else if (i < || i > L->size)
{
printf("i must be 0 - %d\n", L->size);
}
else
{
for (j = i; j <= L->size - ; j++)
{
L->list[j - ] = L->list[j];
}
L->size--;
}
} //查找数据元素
void ListSearch(SeqList *L, ElemType e)
{
int i;
for (i = ; i < L->size; i++)
{
if (L->list[i] == e)
{
printf("%d在顺序表中第%d个位置\n", e, i + );
return;
}
}
printf("顺序表中没有%d这个元素!\n", e);
} //显示元素
void ListDisplay(SeqList *L)
{
int i;
for (i = ; i < L->size; i++)
{
printf("%d\t", L->list[i]);
}
printf("\n");
} //逆置顺序表
void ListReverse(SeqList *L)
{
int i;
ElemType temp;
for (i = ; i < (L->size / ); i++)
{
temp = L->list[i];
L->list[i] = L->list[L->size - i - ];
L->list[L->size - i - ] = temp;
}
} //合并数据表
void ListMerge(SeqList *L1, SeqList *L2, SeqList *L3)
{
int i = , j = , k = ;
while (i < L1->size&&j < L2->size)
{
if (L1->list[i] < L2->list[j])
{
L3->list[k] = L1->list[i];
i++;
k++;
}
else
{
L3->list[k] = L2->list[j];
j++;
k++;
}
}
while (i < L1->size)
{
L3->list[k++] = L1->list[i++];
}
while (j < L2->size)
{
L3->list[k++] = L1->list[j++];
}
L3->size = k;
} int main()
{
SeqList La, Lb, Lc;
int i, e;
int m, n; printf("*** 初始化线性表La ***\n");
ListInit(&La);
printf("请输入线性表La的长度:");
scanf("%d", &m);
La.size = m;
printf("请输入线性表La中的元素(共%d个)\n", m);
for (i = ; i < m; i++)
{
scanf("%d", &La.list[i]);
}
printf("*** 此时线性表La中的元素 ***\n");
ListDisplay(&La); printf("*** 插入数据 ***\n");
printf("请输入要插入的位置:");
scanf("%d", &i);
printf("请输入要插入的元素:");
scanf("%d", &e);
ListInsert(&La, i, e);
printf("*** 此时线性表La中的元素 ***\n");
ListDisplay(&La); printf("*** 删除数据 ***\n");
printf("请输入要删除元素的位置:");
scanf("%d", &i);
ListDelete(&La, i);
printf("*** 此时线性表La中的元素 ***\n");
ListDisplay(&La); printf("*** 查找数据 ***");
printf("请输入要查找的元素:");
scanf("%d", &e);
ListSearch(&La, e); printf("*** 顺序表逆置 ***\n");
ListReverse(&La);
printf("*** 此时线性表La中的元素 ***\n");
ListDisplay(&La); printf("*** 初始化线性表Lb ***\n");
ListInit(&Lb);
printf("请输入线性表Lb的长度:");
scanf("%d", &n);
Lb.size = n;
printf("请输入线性表Lb中的元素(共%d个)\n", n);
for (i = ; i < n; i++)
{
scanf("%d", &Lb.list[i]);
}
printf("*** 此时线性表Lb中的元素 ***\n");
ListDisplay(&Lb); printf("*** 合并线性表La 和 Lb ***\n");
ListInit(&Lc);
ListMerge(&La, &Lb, &Lc);
printf("*** 此时线性表Lc中的元素 ***\n");
ListDisplay(&Lc); scanf("%d", &e); }

顺序表的基本操作(C)的更多相关文章

  1. 顺序表的基本操作【c语言】【创建、插入、删除、输出】

    作为数据结构初学者,上课时对一些知识点掌握得不是很透彻,所以利用课余时间通过微博平台总结所学知识,加深对知识的见解,记录学习历程便于后需要时参考. #include<stdio.h> #i ...

  2. 顺序表及基本操作(C语言)

    #include <stdio.h> #include <stdlib.h> //基本操作函数用到的状态码 #define TRUE 1; #define FALSE 0; # ...

  3. C语言实现顺序表的基本操作(从键盘输入 生成线性表,读txt文件生成线性表和数组生成线性表----三种写法)

    经过三天的时间终于把顺序表的操作实现搞定了.(主要是在测试部分停留了太长时间) 1. 线性表顺序存储的概念:指的是在内存中用一段地址连续的存储单元依次存储线性表中的元素. 2. 采用的实现方式:一段地 ...

  4. 【C++/数据结构】顺序表的基本操作

    <span style="font-size:18px;"><strong>#pragma once #include <iostream> u ...

  5. 数据结构——Java实现顺序表

    一.分析 什么是顺序表?顺序表是指用一组地址连续的存储单元依次存储各个元素,使得在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中的线性表.一个标准的顺序表需要实现以下基本操作: 1.初始化顺序表 ...

  6. 使用JAVA数组实现顺序表

    1,引入了JAVA泛型类,因此定义了一个Object[] 类型的数组,从而可以保存各种不同类型的对象. 2,默认构造方法创建了一个默认大小为16的Object数组:带参数的构造方法创建一个指定长度的O ...

  7. 【C#】【数据结构】001-线性表:顺序表

    C#数据结构:顺序表结构 1.自定义顺序表结构 using System.Collections; using System.Collections.Generic; /// <summary& ...

  8. (java实现)顺序表-ArrayList

    什么是顺序表 顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构. 在使用顺序表存储数据前,会先申请一段连续的内存空间(即数组),然后把数组依次存入 ...

  9. C语言实现顺序表(顺序存储结构)

    顺序表(顺序存储结构)及初始化过程详解 顺序表,全名顺序存储结构,是线性表的一种.通过<线性表>一节的学习我们知道,线性表用于存储逻辑关系为"一对一"的数据,顺序表自然 ...

随机推荐

  1. ThreadLocal实现session中用户信息 的线程间共享(精)

    ThreadLocal并不难理解,我总结的最简单的理解就是: ThreadLocal像其它变量一样(局部.全局.静态)也是一种变量类型,只是他是线程变量,更直白的说他是一种变量作用域,即他的作用域是当 ...

  2. iPhone 已停用

    如果你的iPhone上出现了如下的显示,你可以参考苹果官网上的  iOS设备已停用 如果你看到了这篇文章,你比我幸运多了. 参考这一个条目,你也许就不会丢失里面的数据了. 可怜的我,出现这个问题时还没 ...

  3. GitHub的使用(上)—— 创建和更新

    推荐一个属于自己的代码控制工具(或者是叫代码托管工具)——GitHub. 提起代码控制工具,很容易想到的就是CVS,SVN.这也是开发团队常用的.但如果想管理只属于自己的代码呢?那它们就不太合适了—— ...

  4. Java日志框架 (commons-logging,log4j,slf4j,logback)

    转自:http://blog.csdn.net/kobejayandy/article/details/17335407 如果对于commons-loging.log4j.slf4j.LogBack等 ...

  5. 添加crontab为什么要重定向输出到/dev/null

    如果crontab不重定向输出,并且crontab所执行的命令有输出内容的话,是一件非常危险的事情.因为该输出内容会以邮件的形式发送给用户,内容存储在邮件文件 /var/spool/mail/$use ...

  6. Hbase源码分析:Hbase UI中Requests Per Second的具体含义

    Hbase源码分析:Hbase UI中Requests Per Second的具体含义 让运维加监控,被问到Requests Per Second(见下图)的具体含义是什么?我一时竟回答不上来,虽然大 ...

  7. 宏ut_mem_block_t

    /** This struct is placed first in every allocated memory block */ typedef struct ut_mem_block_struc ...

  8. List排序的两种简便方式

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace List ...

  9. Jquery和一些Html控件

    1.1 Jquery中如何获取各种Html控件的值    1.$("#ID").val();    2.Check获取选中的值:$("#ID").is(&quo ...

  10. java基础 (记事本编写hello world,path,classpath,java的注释符)

    一:java的基本信息 jre 是指java运行环境,jdk 是指 java 开发工具集(并且里面是自带有jre运行环境的) jvm是指java的虚拟机 java的源代码的后缀名是 .java (例如 ...