数据结构顺序表创建问题


L = (SequenList *) malloc ( sizeof( SequenList ) ); 
解析一下这行代码,是生成一个以L为指针的顺序表吗?

为L指针分配内存
SequenList这个只是分配了内存,里面的成员不会初始化
你还需要在下面加上
L->length = 0
之类的代码

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7695604
  • 你也可以参考下这篇文章:【数据结构】链表全解析
  • 除此之外, 这篇博客: <数据结构> 顺序表中的 头插 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 思想:

    比尾插稍微复杂一点,头插就是把最后一个数字往后挪,再把前一个数字往后挪,以此类推,直到把第一个位置给它空出来,但是前提是得确保空间足够,不够就得扩容

    • 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;
    }
    • 效果如下: