顺序表二
<pre>
/#import <Foundation/Foundation.h>
/#include <stdio.h>
/#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<l.length; i++) {
printf("%d ",l.elem[i]);
}
// insertEle(&l, 3, 100);
DelElem(&l,5);
printf("\nThe content of the list is \n");
for (i = 0; i<l.length; i++) {
printf("%d ",l.elem[i]);
}
}
return 0;
}