//线性表顺序存储

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>

typedef  struct{
int  *elem;      //elem表示存储空间的地址:
int   length;     //表示当前长度
int   listsize;    //当前分配的存储长度
}SqList;

//函数声明
void   InitList_Sq(SqList  *LI);    //线性表初始化
void   DestroyList(SqList  *LI);    //销毁线性表
void   ClearList(SqList  *LI  );      //将L置为空表
bool   ListEmpty(SqList  L);        //判断线性表是否为空
int     ListLength(SqList L);        //返回L中数据元素的个数
int     GetElem(SqList L,int i);      //返回第i个数据元素的值
//int  LocateElem(SqList L,int e,compare());
void   ListInsert(SqList  *LI ,int i,int e);     //在i的位置插入元素
int     ListDelete(SqList  *LI ,int i);   //删除线性表中第i个元素
void   ListTraverse(SqList L);                      //线性表遍历
//

//主函数
int main()
{
int val;
SqList  L;               //创建一个线性表
InitList_Sq(&L);      //对表进行初始化
ListInsert(&L ,1,18);
ListInsert(&L ,2,3);
ListInsert(&L ,3,5);
ListInsert(&L ,4,12);
ListInsert(&L ,5,33);
printf("它的长度为:%d\n",L.length);
ListTraverse(L);
val=ListDelete(&L,3);
ListTraverse(L);
return 0;
}

//线性表初始化实现
void   InitList_Sq(SqList  *LI)
{
int num;
printf("请输入存储容量大小:");
scanf("%d",&num);
LI->elem=(int *)malloc(num*sizeof(int));  //为线性表分配地址;
if(!(LI->elem))                                       //判断是否开辟空间
{
printf("系统分配内存失败!\n");
exit(-1);
}
LI->length=0;
LI->listsize=num;
return;
}

//销毁线性表算法
void   DestroyList(SqList  *LI)
{
free(LI);
}

//将线性表置为空表
void   ClearList(SqList  *LI)
{
LI->length=0;
return ;
}

//判断线性表是否为空
bool   ListEmpty(SqList  L)
{
if(L.length==0)
return true;
else{
return false;
}
}

//返回L中数据元素的个数
int     ListLength(SqList L)   
{
return (L.length);
}

//在i的位置插入元素e
void   ListInsert(SqList  *LI ,int i,int e)    
{
int  j,temp;
if((i>((LI->length)+1))||(i<0))
{
printf("插入失败!\n");
exit(-1);
}
else{
  temp=LI->elem[i-1];
LI->elem[i-1]=e;
 for(j=LI->length;j>i+1;j--)
{
 LI->elem[j]=LI->elem[j-1];
 LI->elem[i]=temp;
 }
(LI->length)++;
}
}

// 返回第i个数据元素的值
int  GetElem(SqList L,int i)
{
if((i>((L.length)+1))||(i<0))
{
printf("返回失败!\n");
exit(-1);
}

else{
return(L.elem[i-1]);
}
}

//顺序表的遍历
void   ListTraverse(SqList L)
{
int i;
printf("顺序表的遍历结果是:\n");
for(i=0;i<L.length;i++)
{
printf("%d\n",L.elem[i]);
}
}

//删除第i个元素,并返回删除的值
int   ListDelete(SqList  *LI ,int i)
{
int j,temp;
if((i>(LI->length))||(i<0))
{
printf("删除失败!\n");
exit(-1);
}
else{
temp=LI->elem[i-1];
for(j=i-1;j<LI->length-1;j++)
{
LI->elem[j]=LI->elem[j+1];
}
LI->length--;}
return  temp;
}
//

顺序线性表的基本操作(C语言实现)相关推荐

  1. 用标准C语言初始化线性表,C语言数据结构-顺序线性表的实现-初始化、销毁、长度、查找、前驱、后继、插入、删除、显示操作...

    1.数据结构-顺序线性表的实现-C语言 #define MAXSIZE 100 //结构体定义 typedef struct { int *elem; //基地址 int length; //结构体当 ...

  2. c语言visit_数据结构(c语言)——入门数据结构的世界:顺序线性表(一)

    前面说的话 提到数据结构,最出名的恐怕还是四大基本结构,分别是集合,线性结构,树形结构和图形结构. 本人只是一名普普通通的本科学生,学的东西比较基础,甚至有可能比较落伍,但作为所有国内高等学府相关专业 ...

  3. 线性表的顺序存储 c语言表达,线性表的基本操作顺序存储(C语言).doc

    线性表的基本操作顺序存储(C语言) #include#include#include#define LIST_INIT_SIZE/*线性表存储空间初始分配量*/#define LISTINCREMEN ...

  4. c语言顺序线性表的实现

    结构体的定义 //顺序线性表的结构体 typedef struct List {ElemType * dataList; //数据地址int listLength; //数据表长度int listSi ...

  5. C语言实现数据结构顺序线性表

    大家好,我是胡阳阳 数据结构一直以来都是一门很难的学科 学数据结构时老师总讲的思想和伪代码 对于初学者来说很难写出对应的程序 下面我们来讲解如何才能自己写出顺序线性表的代码 首先顺序线性表是由数组来实 ...

  6. 实验一线性表的基本操作实现及其应用(JavaScript实现)

    实验一线性表的基本操作实现及其应用(JavaScript实现) 实验目的 熟练掌握线性表的结构特点, 掌握顺序表的基本操作. 巩固 C++相关的程序设计方法与技术. 学会使用顺序表解决实际问题. 实验 ...

  7. 链式线性表和顺序线性表

    顺序线性表 顺序表的存储结构通常用一维数组来描述,数组的下标与元素在线性表中的序号相对应. 在这里插入代码片 线性表的存储结构: typedef struct {int elem[MAX_SIZE]; ...

  8. 大话数据结构 01 :顺序线性表

    1.完整代码 #include "stdio.h" #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0#defi ...

  9. 实验报告: 线性表的基本操作及应用

    实验报告: 线性表的基本操作及应用 实验内容 基本要求: (1)实现单链表的创建:(2)实现单链表的插入:(3)实现单链表的删除 (4)实现单链表的查找:(5)实现单链表的显示: /*Name:Lin ...

最新文章

  1. 以太网,IP,TCP,UDP数据包分析【转】
  2. 服务器系统换系统,服务器更换系统
  3. docker基础知识
  4. 【Python】import pandas时,报错 pandas Missing required dependencies ['numpy'] 原因分析
  5. es6 获取对象的所有值_前端开发必备 - ES6 新特性之 Set和Map数据结构
  6. 在才开始进入前端这个坑的时候 在布局中会遇到很多问题 我才入这个坑的时候 在margin top 中遇到几个bug 我分享一下...
  7. 虚拟桌面显示未注册的情况,可以检查一下几点
  8. 【整理】牛客网编程题-前端篇(入门难度)
  9. 计算机没网络怎么更新网卡驱动,电脑显示没有网卡驱动怎么办?电脑显示没有网卡驱动的解决方法...
  10. windows +caffe+python2.7或者python3.5编译 。
  11. css3缓慢出现,让CSS3旋转开始缓慢然后结束缓慢?
  12. java 金融面试题目_面试题 - java金融 - 博客园
  13. 中国货币供应量全球第一的反思
  14. HTML调用Java函数或语句,在动态THML语句中调用JS函数传递带空格参数的问题
  15. go官网打不开,下载地址https://golang.google.cn/
  16. 计算机系导师推荐意见,就业推荐表上导师评语
  17. 安卓uc斗鱼html5,斗鱼HTML5播放器
  18. wxpython中表格顶角怎么设置_wxpython编程之 grid(数据表格) | 学步园
  19. 特种部队小组2+蒲公英联机平台联机教程
  20. 什么是C端 什么是B端 这里告诉你

热门文章

  1. Oracle数据库的增删改操作介绍
  2. hbase里面命令行删除_HBase实践 | HBase疑难杂症诊治
  3. 计算机应用作业2,计算机应用2作业
  4. Java-控制台接受用户输入数据的方法
  5. 包容网关 Inclusive Gateway
  6. 由系统调用想起的。。。
  7. python中的zip、map、reduce 、lambda、filter函数的使用
  8. LabWindows/CVI第一章:基本规则
  9. Spark2.0.2+Zeppelin0.6.2 环境搭建 初探
  10. 每日站立例会01,02,03