顺序表基本操作函数总结

/*************************************************************************************/
/*   顺序表基本操作函数
/*------------------------------------------------------------------------------------------------------------------------------
/*  
/* Date: 2016年10月14日
/* Auther:vensontao
/************************************************************************************/

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

#define MaxSize 50

typedef char ElemType;

//--------------------------------------------------------
// 顺序表的类型定义
//--------------------------------------------------------
typedef struct 
{
     ElemType data[MaxSize];  // 存放顺序表元素
    int length;                        // 存放顺序表的长度
} SqList;

//========================================================
// 建立顺序表
//========================================================
void CreateList(SqList *&L, ElemType a[], int n)
{
     int i;
     for (i=0;i<n;i++)
          L->data[i]=a[i];
     L->length=n;
}

//========================================================
// 初始化顺序表
//========================================================
void InitList(SqList *&L)
{
    L=(SqList *)malloc(sizeof(SqList)); /*分配存放线性表的空间,并将地址初始化为0*/
    L->length=0;
}

//========================================================
// 销毁顺序表
//========================================================
void DestroyList(SqList *&L)
{
    free(L);
}

//========================================================
// 判断顺序表是否为空
//========================================================
int ListEmpty(SqList *L)
{
    return (L->length==0);
}

//========================================================
// 求顺序表的长度
//========================================================
int ListLength(SqList *L)
{
    return (L->length);
}

//========================================================
// 输出顺序表元素
//========================================================
void DispList(SqList *L)
{
    int i;
    if (ListEmpty(L)) 
         return;
    for (i=0;i<L->length;i++)
         printf("%c ",L->data[i]);
    printf("\n");
}

//========================================================
// 求顺序表中某个元素的值
//========================================================
int GetElem(SqList *L,int i,ElemType &e)
{
    if (i<1 || i>L->length)
       return 0;
    e=L->data[i-1];
    return 1;
}

//========================================================
// 求顺序表中某个元素的位置
//========================================================
int LocateElem(SqList *L, ElemType e)
{
  int i=0;
  while (i<L->length && L->data[i]!=e) 
    i++;
  if (i>=L->length)
    return 0;
  else
    return i+1;
}

//========================================================
// 向顺序表指定位置插入元素
//========================================================
int ListInsert(SqList *&L,int i,ElemType e)
{
  int j;
  if (i<1 || i>L->length+1)
    return 0;
  i--; /*将顺序表位序转化为elem下标*/
  for (j=L->length;j>i;j--) /*将data[i]及后面元素后移一个位置*/
    L->data[j]=L->data[j-1];
  L->data[i]=e;
  L->length++; /*顺序表长度增1*/
  return 1;
}

//========================================================
// 删除顺序表中指定位置的元素
//========================================================
int ListDelete(SqList *&L,int i,ElemType &e)
{
  int j;
  if (i<1 || i>L->length)
    return 0;
  i--; /*将顺序表位序转化为elem下标*/
  e=L->data[i];
  for (j=i;j<L->length-1;j++) /*将data[i]之后的元素前移一个位置*/
    L->data[j]=L->data[j+1];
  L->length--; /*顺序表长度减1*/
  return 1;
}

时间: 2024-10-09 18:18:05

顺序表基本操作函数总结的相关文章

顺序表 基本操作

1 实验1 顺序表基本操作 2 3 实验目的 4 1. 熟悉C语言的上机环境,掌握C语言的基本结构. 5 2. 会定义线性表的顺序存储结构. 6 3. 熟悉对顺序表的一些基本操作和具体的函数定义. 7 注意事项 8 在做第一次“数据结构”课程实验之前,要在硬盘上建立好自己的工作目录,专门来存储你所做的实验程序及相关信息,以后每次做实验都采用这个目录. 9 实验内容 10 该程序的功能是对元素类型为整型的顺序表进行一些操作.该程序包括顺序表结构类型的定义以及对顺序表操作的具体的函数定义和主函数.

1.1顺序表基本操作的设计与实现

实现顺序表的基本操作,包括顺序表的建立,查找,求长度,查找前驱,插入,删除,输出等函数 #include <iostream> #include <cstdio> #include <cstdlib> using namespace std; #define OK 1 #define ERROR 0 #define OVERFLOW -1 #define List_INIT_SPACE 100 //存储空间初始分配量 #define List_INC_SPACE 10

1.顺序表基本操作

(ps上了大学,一开始不知道自己专业是学编程的,等到半路知道自己是学编程的时候,又不知道到底该怎么学,该学什么.一直处于一个很尴尬的境地. 大一的时候玩了玩pangolin,学了html和一点点java就想搞sql注入.想想当时挺好玩的,也算是步入了编程这条不归路吧. 到了大二开始学java,当时很懵逼为什么jdk要配置环境变量,环境变量又什么鬼,eclipse又是啥,myeclipse又TM是啥... 到了大三,学完了框架,ssh没怎么写,主要用ssm写了几个项目,感觉就是增删改查,顶多加个s

[BS]线性表-顺序表基本操作

线性表分为顺序表和链表. 顺序表的基本操作如下: #include <stdio.h> #include <stdlib.h> /*---------------------------------------------*/ #define INIT_VOLUME_OF_LIST 100 #define INCRESE_VOLUME 10 /*---------------------------------------------*/ typedef char ElemType

数据结构实验报告-实验一 顺序表、单链表基本操作的实现

实验一    顺序表.单链表基本操作的实现   l  实验目的 1.顺序表 (1)掌握线性表的基本运算. (2)掌握顺序存储的概念,学会对顺序存储数据结构进行操作. (3)加深对顺序存储数据结构的理解,逐步培养解决实际问题的编程能力. l  实验内容 1. 顺序表 1.编写线性表基本操作函数: (1)InitList(LIST *L,int ms)初始化线性表: (2)InsertList(LIST *L,int item,int rc)向线性表的指定位置插入元素: (3)DeleteList1

数据结构(一)线性表——顺序表

一.顺序表基本操作的实现 通常把顺序存储结构实现的线性表称为顺序表. 1.状态类型Status的定义 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; typedef char ElemType; 2.顺序表类型SqList的定义 #define ListSpaceIncr 20 typedef stru

【数据结构】线性表&amp;&amp;顺序表详解和代码实例

喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 预备知识 1.0 什么是线性表? 线性表(List)是零个或者多个数据元素的有限序列. 首先它是一个序列.里面的元素是有顺序的,如果有多个元素,除开头和结尾以外的元素都有一个前驱和一个后继.而开头元素只有后继,结尾元素只有前驱. 其次线性表是有限的,也就是里面的元素个数是有限的. 1.1 线性表的基本操作(描述) 1ADT 线性表(List) 2Data 3    线性表的数据对象集合为{a1, a2, a3, ...

【数据结构】顺序表和链表

一.顺序表 顺序表定义 :顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素.使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表.顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中. 顺序表可以分为静态顺序表和动态顺序表,静态较为简单,本文提供全部动态顺序表基本操作的代码. 顺序表的基本操作:

6-1 顺序表创建和就地逆置 (10 分)

本题要求实现顺序表的创建和就地逆置操作函数.L是一个顺序表,函数ListCreate_Sq(SqList &L)用于创建一个顺序表,函数ListReverse_Sq(SqList &L)是在不引入辅助数组的前提下将顺序表中的元素进行逆置,如原顺序表元素依次为1,2,3,4,则逆置后为4,3,2,1. 函数接口定义: Status ListCreate_Sq(SqList &L); void ListReverse_Sq(SqList &L); 裁判测试程序样例: //库函数