线性表的标准模板

#include <stdio.h>

#include <stdlib.h>

#include <malloc.h>

#define LISTINCREASMENT 100                 /*每次分配元素的个数*/

#define  LISTSIZE 10                           /*顺序存储的最大个数*/

#define  OVERFLOW -1

#define  OK 1  

typedef int ElemType;


typedef struct                                   /*顺序表元素的的定义*/

{

    ElemType * elem;

    int length;

    int listsize;

} Sqlist;


int SqInitial(Sqlist &L)                           /*初始化线性表*/

{

    L.elem=(ElemType *) malloc (LISTSIZE*sizeof(ElemType));

    if (! L.elem)  exit(OVERFLOW); //存储分配失败 

    L.length=0;

    L.listsize=LISTSIZE;

    return OK;

}


int ListInsert(Sqlist &L,int i,ElemType e)            /*插入元素*/

{

    if(i<1|| i > L.length+1) printf("ERROR!");

    if(L.length>=L.listsize)

    {

        ElemType*newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREASMENT)

                                            *sizeof(ElemType));

        if(!newbase)   return  OVERFLOW;// 当前存储空间已满


L.elem=newbase;

        L.listsize+=LISTINCREASMENT;         /*表的容量不足分配内存*/

    }

    ElemType *q=&(L.elem[i-1]);

    ElemType *p;

    for(p=&(L.elem[L.length-1]); p>=q; --p)

        *(p+1)=*p;

    *q=e;

    ++L.length;

    return OK;


}


void ListDelete(Sqlist &L,int i,ElemType &e)           //删除线性表中第i个位置上的元素

{

    if(i<1||i>L.length) printf("ERROR!");

    else

    {

        e=L.elem[i-1];

        for(;i<L.length;i++)

        {

            L.elem[i-1]=L.elem[i];

        }

        L.length--;

    }


}

ElemType GetElem(Sqlist &L,int i)

{

    if(i<1||i>L.length) printf("ERROR!");

    else

    {

        return L.elem[i-1];

    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值