码迷,mamicode.com
首页 > 其他好文 > 详细

线性表

时间:2014-09-16 23:21:21      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   ar   for   数据   div   sp   代码   

1.概念:线性表是由零个或多个数据元素组成的有限数列。

2.线性表的抽象数据类型:

(1)InitList(*L):初始化线性表,建立一个空的线性表L

(2)ListEmpty(*L):判断线性表是否为空表,若为空则返回True,否则返回false

(3)ClearList(*L):将线性表清空

(4)GetElem(L,i,*e):将线性表L中的第i个位置元素值返回给e

(5)LocateElem(L,e):在线性表L中查找与给定e值相等的元素,如果查找成功,返回该元素在表中序号表示成功,否则,返回0表示失败。

(6)ListInsert(*L,i,e):在线性表L中第i个位置插入元素e。

(7)ListDelete(*L,i,*e):删除线性表L中第i个位置元素,并用e返回其值。

(8)ListLength(L):返回线性表L的元素个数。

3.线性表两种存储结构:顺序存储结构和链式存储结构

顺序存储结构:用一段地址连续的存储单元一次存储线性表的数据元素。

顺序存储的结构代码:

#define MAXSIZE 20
typedef int ElemType;
typedef struct
{
  ElemType data[MAXSIZE];
  int length;  //线性表当前长度
}SqList;

顺序存储结构封装的三个属性:

(1)存储空间的起始位置,数组data,它的存储位置就是线性表的存储空间的存储位置

(2)线性表的最大存储容量:数组的长度MAXSIZE.

(3)线性表的当前长度:length

注:

1.数组的长度与线性表的当前长度需要区分一下:数组的长度是存放线性表的存储空间的总长度,一般是初始化前后不变。而线性表的当前长度是线性表中元素的个数,是会动态变化的。

2.数组下标从0开始,线性表内元素从1开始。

LOC(ai+1) = LOC(a1)+(i-1)*C (C为数据类型所占字节数)

getElem.c

status getElem(SqList L,int i,ElemType *e)
{
    if (L.length == 0|| i< 1||i > L.length)
    {
        return  Error
    }
    *e = L.data[i- 1]
    return OK
}
LocateElem.c

status listInsert(*L,i,e)
{
    if(L.length == MAXSIZE || i < 1|| i > L.length+1)
    {
        return ERROR
    }
    if(i < L.length+1)
    {
        for(j=L.length;j>i-1;j--)
        {
            L.data[j] = L.data[j-1]
        }
    }
    L.data[i-1] = e
    L.length++;
    return ok
}

ListDelete(*L,i,*e)

status ListDelete(*L,i,*e)
{
    if( i < 0 || i > L.length)
    {
        return ERROR
    }
    e = L.data[i-1]
    if(i < L.length)
    {
        for(j=i;j<L.length;j++)
        {
            L.data[j-1] = L.data[j]
        }
    }
    L.length--;
    return e
}

 

线性表

标签:style   blog   color   ar   for   数据   div   sp   代码   

原文地址:http://www.cnblogs.com/shixiaomiao/p/3973837.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!