L = (SequenList *) malloc ( sizeof( SequenList ) );
解析一下这行代码,是生成一个以L为指针的顺序表吗?
为L指针分配内存
SequenList这个只是分配了内存,里面的成员不会初始化
你还需要在下面加上
L->length = 0
之类的代码
- 思想:
比尾插稍微复杂一点,头插就是把最后一个数字往后挪,再把前一个数字往后挪,以此类推,直到把第一个位置给它空出来,但是前提是得确保空间足够,不够就得扩容
- SeqList.h文件:
//头插 void SeqListPushFront(SeqList* psl, SLDataType x);
- SeqList.c文件:
//头插 void SeqListPushFront(SeqList* psl, SLDataType x) { assert(psl); SeqListCheckCapacity(psl); //检测容量 int end = psl->size - 1; while (end >= 0) { psl->a[end + 1] = psl->a[end]; end--; } psl->a[0] = x; psl->size++; }
- Test.c文件:
int main() { SeqList s; SeqListInit(&s); //一定要加上&,因为形参的改变不会影响实参,要传地址 //先尾插4个数字 SeqListPushBack(&s, 1); SeqListPushBack(&s, 2); SeqListPushBack(&s, 3); SeqListPushBack(&s, 4); SeqListPrint(&s); //尾插4次后打印 //头插2个数字 SeqListPushFront(&s, 0); SeqListPushFront(&s, -1); SeqListPrint(&s); //头插2次后打印 return 0; }
- 效果如下: