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

顺序表

时间:2018-03-11 14:45:27      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:空间   元素   last   定义   插入   hub   tty   array   线性表   

线性表:由同类数据元素构成的有序序列的线性结构

实现方式分两种:顺序存储实现(ArrayList)和链式存储实现(LinkList)

顺序表

0、结构初始化

顺序表结构如图:

技术分享图片

struct ListNode {
    ElementType Data[MaxSize];  //定义一个大小为MaxSize的数组
    int Last;                   //最后一个元素所在的位置
};


1、建立(空顺序表)

struct ListNode* MakeEmpty() {
    struct ListNode* P;

    P=(struct ListNode*)malloc(sizeof(struct ListNode));
    P->Last=-1;
    return p;
}


2、查找

//找不到则返回-1,找到则返回i
int Find(ElementType x,struct ListNode* P) {
    int i=0;

    while (i<=P->Last&&P->Data[i]!=x) i++;
    if (i>P->Last)
        return -1;
    else
        return i;
}


3、插入

图解如下:

技术分享图片

//第 i (1≤i≤n+1)个位置上插入一个值为X的新元素
//即在下标为i-1位置上,插入元素x
void Insert(ElementType x,int i,struct ListNode* P) {
    int j;

    //判断表空间是否已满
    if (p->Last==MaxSize-1) return ;
    //检查插入合法性
    if (i<1 || i>p->Last+2) return ;

    //数据往后挪,然后再插入
    for (j=p->Last;j>=i-1;j--) {
        p->Data[j+1]=p->Data[j];
    }
    p->Data[i-1]=x;
    p->Last++;
}


4、删除

图解如下:

技术分享图片

//删除表的第 i (1≤i≤n)个位置上的元素
//即删除下标为i-1位置的元素
void Delete(int i,struct ListNode* p) {
    int j;

    //判断元素是否存在
    if (i<1 || i>p->Last+1) return ;

    for (j=i-1;j<p->Last;j++) {
        p->Data[j]=p->Data[j+1];
    }
    p->Last--;
}

顺序表

标签:空间   元素   last   定义   插入   hub   tty   array   线性表   

原文地址:https://www.cnblogs.com/WakingUp/p/8543386.html

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