动态顺序表

       题目:动态的创建一个顺序表。要求:顺序表初识长度为10,向顺序表中输入15个整数,并打印出来;再删除顺序表中的第5个元素,打印出删除后的结果。

代码:

#include <stdio.h>
#include <conio.h>
#include<stdlib.h>
#define MaxSize 10
typedef int ElemType ;  /*将int定义为ElemType*/

typedef struct{
int *elem;
int length;
int listsize; 
} Sqlist;

/**  初始化一个顺序表  */
/**  参数L:Sqlist类型的指针  */
void initSqlist(Sqlist *L){
    L->elem=(int *)malloc(MaxSize*sizeof(ElemType));
    if(!L->elem) exit(0);
    L->length=0;
    L->listsize= MaxSize;
} 

/**  向顺序表中插入元素   */
/**  参数L:Sqlist类型的指针  */
/**  参数i:插入元素的位置 */
/**  参数item:插入的元素  */
void InsertElem(Sqlist *L,int i,ElemType item){
    /*向顺序表L中第i个位置上插入元素item*/
    ElemType  *base,* insertPtr,*p;
    if(i<1||i>L->length+1) exit(0);
    if(L->length>=L->listsize)
    {
        base=(ElemType*)realloc(L->elem,(L->listsize+10)*sizeof(ElemType));
        L->elem=base;
    L->listsize=L->listsize+100;
    }
    insertPtr=&(L->elem[i-1]);
    for(p=&(L->elem[L->length-1]);p>= insertPtr;p--)
            *(p+1)=*p;
    * insertPtr=item;
    L->length++;
}
/**  从顺序表中删除元素   */
/**  参数L:Sqlist类型的指针  */
/**  参数i:删除元素的位置 */
void DelElem(Sqlist *L,int i) {
    /*从顺序表L中删除第i个元素*/
    ElemType *delItem, *q;
if(i<1||i>L->length) exit(0);
    delItem=&(L->elem[i-1]);
    q=L->elem+L->length-1 ;
    for(++delItem; delItem<=q;++ delItem)*( delItem-1)=* delItem;
    L->length--;
}

/** 测试函数 */
void main()
{
    Sqlist l;
    int i;
    initSqlist(&l);   /*初始化一个顺序表*/
    for(i=0;i<15;i++)
        InsertElem(&l,i+1,i+1); /*向顺序表中插入1……15*/
    printf("\nThe content of the list is\n");
    for(i=0;i<l.length;i++)
        printf("%d ",l.elem[i]);/*打印出顺序表中的内容*/
    DelElem(&l,5);     /*删除第5个元素,即5*/
    printf("\nDelete the fifth element\n");
    for(i=0;i<l.length;i++)       /*打印出删除后的结果*/
        printf("%d ",l.elem[i]);
   getche();
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值