顺序表操作

顺序表的建立、插入等;

#include<stdio.h>
typedef int Elemtype ;
const int LIST_INIT_SIZE = 100 ;
const int LISTINCREAMENT = 10 ;
typedef struct {
    Elemtype *elem ;
    int length = 0 ;
    int listsize ;
    int incrementsize ;
} Sqlist ;
//初始化操作
void InitList_Sq(Sqlist &L , int maxsize = LIST_INIT_SIZE,int incresize = LISTINCREAMENT)
{
    L.elem = new Elemtype[maxsize] ;
    L.listsize = maxsize ;
    L.incrementsize = incresize ;
}
//顺序表追加空间函数
void increment(Sqlist &L)   {
    Elemtype *a ;
    a = new Elemtype[L.listsize+L.incrementsize] ;
    for(int i = 0 ; i < L.length ; i++)
        a[i] = L.elem[i] ;
    delete[] L.elem ;
    L.elem = a ;
    L.listsize += L.incrementsize ;
}
//插入元素操作
void ListInsert_Sq(Sqlist &L , int i , Elemtype e)  {
    if(i<1||i>L.length+1)
        printf("i值不合法\n") ;
    else if(L.length>=L.listsize)
        increment(L) ;
    Elemtype *q ;
    q = &(L.elem[i-1]) ;
    for(Elemtype *p = &(L.elem[L.length-1]) ; p >= q ; --p)
        *(p+1) = *p ;
        *q = e ;
    L.length++ ;
}
int main()  {
    Sqlist L ;
    InitList_Sq(L) ;
    for(int i = 0 ; i < 10 ; i++)   {
        L.elem[i] = i ;
        L.length++ ;
    }
    for(int i = 0 ; i < 10 ; i++)
       printf("%d ",L.elem[i]) ;
    printf("\n") ;
    ListInsert_Sq(L,6,10) ;
    for(int i = 0 ; i < 11 ; i++)
       printf("%d ",L.elem[i]) ;
    printf("\n") ;
    return 0 ;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>