#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define MAXSIZE 20 //初始长度 typedef int ElemType; //类型为int
typedef struct{
ElemType data[MAXSIZE];//数组。存储元素
int length;
}SqList;
//顺序表的初始化
SqList Init(){
//创建一个空的线性表L,时间复杂度O(1)
SqList L; //定义
L.length=;//初始长度为0
return L; //返回空顺序表
}
//顺序表的建立
SqList Create(SqList L)
{
int i;
srand((unsigned)time(NULL));
for(i=;i<;i++)
{
L.data[i]=rand()%;
L.length++;
}
return L;
}
//用e返回线性表中第i个元素的值
//此时L应该已经存在
ElemType GetElem(SqList L,int i)
{
if(i<||i>L.length)
{
printf("查找位置错误!\n");//位置是否合法
return ;
}
else
return L.data[i-];
}
//顺序表的插入
SqList ListInsert(SqList L, int i, ElemType x)
{ //在顺序表中的第i个位置插入元素x if(L.length == MAXSIZE)
printf("表已经满了\n");//插入时,必须检查表是否已经满了。否则会出现溢出错误
else if(i < || i > L.length)
printf("插入位置错误\n");//判断插入位置的有效性
int j;
for(j = L.length-; j >= i - ; j--)//第i个位置元素逐个后移
L.data[j+] = L.data[j];
L.data[i-] = x; //插入元素x
L.length++; //顺序表长度增1 return L; } //删除元素
SqList ListDelete(SqList L,int i)
{
int k;
if(L.length==) //线性表为空
printf("表为空无法删除");
if(i<||i>L.length)
printf("删除的位置不正确");
if(i<L.length)
{
for(k=i;k<L.length;k++)//将删除的位置后继元素前移
L.data[k-]=L.data[k];
L.length--;
}
return L;
}
int main()
{
SqList l;
l=Init();
l=Create(l);
char choose;//操作选择
int find;//查找操作
int found;//查找到的元素 int position;//标记元素的位置
int value;//插入的元素 int i; printf("初始化完成.........\n"); while(true){ printf("\n1.查看顺序表 \n2.查找元素 \n3.插入元素 \n4.删除元素 \n5.退出 \n请选择你的操作。。。");
scanf("%c",&choose); switch(choose){
case '':
system("cls");
printf("查看线性表:");
for(i=;i<l.length;i++)
{
printf("%d ",l.data[i]);
}
printf("\n");
break;
case '':
system("cls");
printf("输入你要查找第几个元素?\n");
scanf("%d",&find);
found=GetElem(l,find);
printf("第%d个值为%d\n",find,found);
break;
case '':
system("cls");
printf("请输入要插入的元素位置:");
scanf("%d",&position);
printf("输入要插入的元素的值:");
scanf("%d",&value);
l=ListInsert(l,position,value); printf("\n插入后的顺序表为:");
for(i=;i<l.length;i++)
{
printf("%d ",l.data[i]);
}
printf("\n");
break;
case '':
system("cls");
printf("请输入要删除掉的元素位置:\n");
scanf("%d",&position);
l=ListDelete(l,position);
printf("\n删除后的顺序表为:");
for(i=;i<l.length;i++)
{
printf("%d ",l.data[i]);
}
printf("\n");
break;
case '':
exit(); } }
system("pause");
}

c语言线性表的更多相关文章

  1. C语言 线性表 双向链式结构 实现

    一个双向链式结构实现的线性表 duList (GCC编译). /** * @brief 线性表双向链表结构 * @author wid * @date 2013-10-28 * * @note 若代码 ...

  2. C语言 线性表 链式表结构 实现

    一个单链式实现的线性表 mList (GCC编译). /** * @brief 线性表的链式实现 (单链表) * @author wid * @date 2013-10-21 * * @note 若代 ...

  3. C语言 线性表 顺序表结构 实现

    一个能够自动扩容的顺序表 ArrList (GCC编译). #include <stdio.h> #include <stdlib.h> #include <string ...

  4. C语言——线性表及其应用

    程序要求 1.建立含n个数据元素的顺序表并输出该表中各元素的值及顺序表的长度.2.利用前面的实验先建立一个顺序表L={21,23,14,5,56,17,31},然后在第i个位置插入元素68.3.建立一 ...

  5. C语言--线性表

    #include<stdio.h>#include<stdlib.h>#include<string.h>#define LIST_SIZE 100#define ...

  6. 数据结构算法C语言实现(二)---2.3线性表的链式表示和实现之单链表

    一.简述 [暂无] 二.头文件 #ifndef _2_3_part1_H_ #define _2_3_part1_H_ //2_3_part1.h /** author:zhaoyu email:zh ...

  7. 数据结构算法C语言实现(一)---2.2线性表的顺序表示和实现

    注意: 虽然是用C语言实现,但是考虑到使用了一个C++的特性----引用以简化代码,所以所有的代码均以cpp作为后缀,用g++编译(以后不做说明). g++版本: 一.简述 本节主要讲述线性表的顺序实 ...

  8. 线性表之顺序存储结构(C语言动态数组实现)

    线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3....an) 链 ...

  9. 数据结构-线性表的链式存储相关算法(C语言实现)

    链表的简单介绍 为什么需要线性链表 当然是为了克服顺序表的缺点,在顺序表中,做插入和删除操作时,需要大量的移动元素,导致效率下降. 线性链表的分类 按照链接方式: 按照实现角度: 线性链表的创建和简单 ...

随机推荐

  1. MySql小知识点

    1.查看MySql是什么编码 show create table tablename;

  2. Nexus远程Maven仓库索引下载教程

    下载Maven仓库索引有两种方式: 一.手动下载 首先将索引下载到本地,下载地址:nexus-maven-repository-index.zip 解压索引压缩包,将里面内容全部拷贝   关闭当前Ne ...

  3. Android Studio rename module Can't rename root module

    Android Studio修改工程根目录的时候会报错, rename module Can't rename root module. 主要是该工程已经打开,再命名必须要关闭改工程,就跟正在写一个t ...

  4. Python的tkinter和tkinter.messagebox应用-鼠标和键盘命令绑定

    __author__ = 'Administrator' from tkinter import * import tkinter.messagebox class MainWindow: def b ...

  5. python针对于mysql的增删改查

    无论是BS还是CS得项目,没有数据库是不行的. 本文是对python对mysql的操作的总结.适合有一定基础的开发者,最好是按部就班学习的人阅读.因为我认为人生不能永远都是从零开始,那简直就是灾难. ...

  6. django之uWSGI配置 +Nginx

    参考文档 官方文档   安装: pip install uwsgi 启动命令: 方法一.直接命令启动 /home/zabbix/application/python/bin/uwsgi --socke ...

  7. PHP设计模式之装饰器模式

    装饰器模式:如果已有对象的部分内容或功能性发生改变,但是不需要修改原始对象的结构或不使用继承,动态的扩展一个对象的功能,则应该使用装饰器模式.简单点说:就是我们不应该去修改已有的类,而是通过创建另外一 ...

  8. Java Web 中 过滤器与拦截器的区别

    过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法u ...

  9. CentoS6.x网络配置

    一.配置文件 在CentoS系统里面,跟网络有关的主要配置文件有    1./etc/host.conf # 配置域名服务客户端的控制文件 2./etc/hosts # 配置主机名映射为IP的功能 3 ...

  10. BPM7.5.1升级细节,万事开头难

    背景:Linux5.9,BPM 7.5.0集群环境,内置WAS ND7.0.0.17 详情见上图 故障现象:升级BPM 7.5.1集群环境 1,按照 IBM 信息中心步骤,升级BPM需下载相应补丁 包 ...