顺序表二

#import 
#include 
#define MaxSize 10
typedef int ElemType;
typedef struct{
    int *elem;
    int length;
    int listsize;
}Sqlist;
/**
 初始化一个顺序表
 @param L Sqlist类型的指针
 */
void initSqlist(Sqlist *L){
    L->elem = (int *)malloc(MaxSize * sizeof(ElemType));
    if (!L->elem) {
        exit(0);
    }
    L->length = 0;           //开始为空
    L->listsize = MaxSize;   //最大容量
}
void insertEle(Sqlist *L,int i,ElemType item){
    ElemType *base,*insertPtr,*p;
    if(i<1 || i>L->length+1) return;
    if (L->length==L->listsize) {
        base = (ElemType *)realloc(L->elem,(L->listsize+10)*sizeof(ElemType));
        L->elem = base;
        L->listsize = L->listsize+100;
        NSLog(@"%d",L->length);
    }
    insertPtr = &(L->elem[i-1]);
    // 第二次 单独调用的时候 插入数据使用 把数据往后挪一位
    for (p=&(L->elem[L->length-1]); p>=insertPtr; p--) {
        *(p+1) = *p;
//        NSLog(@"-->%d",*p);
    }
    *insertPtr = item;
//    NSLog(@"hha->%d",*insertPtr);
    L->length++;
}

/**
 删除元素
 @param L Sqlist类型的指针
 @param i 删除元素的位置
 */
void DelElem(Sqlist *L,int i){
    ElemType *delItem,*q;
    if (i<1 || i>L->length) {
        return;
    }
    delItem = &(L->elem[i-1]);  //要删除元素的位置
    q = L->elem + L->length-1;  //最后一个元素的位置
    for (++delItem; delItem<=q; ++delItem) {
        *(delItem-1) = *delItem;
    }
    L->length--;
}
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
        Sqlist l;
        int i;
        initSqlist(&l);
        for (i=0; i<15; i++) {
            insertEle(&l, i+1, i+1);
        }
        printf("\nThe content of the list is \n");
        for (i = 0; i

你可能感兴趣的:(顺序表二)