Chinaunix首页 | 论坛 | 博客
  • 博客访问: 401431
  • 博文数量: 199
  • 博客积分: 154
  • 博客等级: 入伍新兵
  • 技术积分: 1530
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-14 08:43
文章分类

全部博文(199)

文章存档

2015年(101)

2014年(97)

2011年(1)

分类: C/C++

2015-05-15 17:10:57

#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 Delete(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--;
}
/** 测试函数 */
 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         printf("%d ",l.elem[i]);/*打印出顺序表中的内容*/
    DelElem(&l,5);     /*删除第5个元素,即5*/
    printf("\nDelete the fifth element\n");
    for(i=0;i         printf("%d ",l.elem[i]);
}

阅读(1057) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~