知方号

知方号

[数据结构] 顺序表的创建、取值、查找、插入和删除

概述:

顺序表为线性表的顺序存储结构,且这种线性存储结构是一种随机存取的存储结构。

分析:一个一元多项式顺序表中有系数和指数

一元多项式顺序存储结构示意图 elem[0]elem[1]elem[2]......elem[length-1]

//空闲区....

......

所以在构造顺序表之前,我们先要定义一个需要用到的变量的结构类型

#define MAXSIZE 100            //设置顺序表的最大长度

typedef struct                          //创造一个结构类型

{

    foat  coef;                            //系数

    int expn;                              //指数

}Ploynomial;                            //结构体类型为Ploynomial(名字)

当然,如果有别的需求可以将结构类型里的变量换一换,所以在以下的结构类型中,将以ElemType为名字表示关于变量的结构类型

一、创建顺序表

有了以上的结构类型,就可以定义一个多项式的顺序存储结构的类型了

#define MAXSIZE 100        //顺序表的最大长度(其实刚刚已经有定义了) typedef struct {     ElemType *elem;            //开辟一个存储空间的基地址                                            //ElemTypp为刚刚创建了的结构类型     int length;                       //用来存储顺序表的当前长度 }SqList;                               //顺序表的结构类型为Sqlist

然后将顺序表初始化,令这个初始化顺序表的函数名为InitList()

Status InitList(SqList &L)                 //L为线性表,SqList为刚刚创建了的结构类型 {//构造一个空的顺序表     L.elem=new ElemType[MAXSIZE];          //为顺序表分配一个大小为MAXSIZE的数组空间    

    // C的写法为:     //L.data(Elemtype *malloc(sizeof(ElemType[MAXSIZE])))     //malloc(m)------开辟m字节的长度的地址空间并返回首地址     //sizeof(x)--------x长度     if( !L.elem ) exit (OVERFLOW);     L.length=0;     return OK; }

二、顺序表的取值

Status GetElem(SQList L,int i,ElemType &e)

{//取值e,i为e所在的位置喜好

    if( iL.length )  return ERROR;     //i值不合法,返回ERROR

//i是顺序表的索引,顺序表再咋样i也不能小于1撒,同样i也不能大于线性表

    e=L.elem[i-1];        //注意:elem[i-1]单元存储第i个元素,elem索引从0开始

    return OK;

}

三、顺序表的插入

Status ListInsert(SqList &L,int i,ElemType e) {     if( (iL.length+1)) return ERROR;                 //i值不合法     if(L.length==MAXSIZE) return ERROR;                //当前的存储空间已满     for(j=L.length-1;j>=i-1;j--)     {         L.elem[j+1]=L.elem[j];                         //把要插入的位置之后的元素往后移     }     L.elem[i-1]=e;                                     //将新元素e插入第i个位置     ++L.length;                                        //表长加1     return OK; }

四、顺序表的删除

Status ListDelete(SqList &L,int i) {     if((iL.length)) return ERROR;        //i值不合法     for(j=i;j

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。