c语言 数据结构 顺序存储结构线性表初始化问题

问题是void InitList(Sqlist *L) ,这里只是设置了len不就相当于什么都没做吗,传递结点地址怎么就初始化成结点数组,即链表了?

#include <stdio.h>

#include <stdlib.h>

#define OK 1

#define NO 0

#define MAXSIZE 20

typedef int bool;

typedef int ElemType;

int nn=0;



void InitList(Sqlist *L)  ///传递结点地址而已,怎么会初始链表

{

    L->len=0;

}

ElemType FindElem(Sqlist L,int n)

{

    ElemType e;

    if(n>L.len)

        return 0;

    return L.data[n-1];

}

bool ListInsert(Sqlist *L,int n,ElemType data)

{

    int i;

    if(L->len==MAXSIZE||n>L->len+1)

        return 0;



    for(i=L->len+1; i>=n; i--)

    {

        if(L->len==MAXSIZE-1)

            break;

        L->data[i]=L->data[i-1];

    }

    L->data[n-1]=++nn;

    L->len++;

    return 1;

}


void main()

{

    Sqlist L;

    InitList(&L);   ///这怎么就把结点初始化为链表了?

    int i;

    ElemType temp;

    for(i=1; i<=5; i++)

    {

        if(!ListInsert(&L,i,i))

            printf("no");

    }

    

    ShowList(L);

    

}


拉风的咖菲猫
浏览 1240回答 2
2回答

元芳怎么了

InitList 初始化一个空“链表”(数组),len 表示的是链表中有效节点的数量。有点类似栈指针的意思

斯蒂芬大帝

朋友,这里初始化的应该是顺序表,因为在定义结构时有顺序表长度这个关键属性,所以初始化顺序表即将其长度初始为零。这里没有链表的事情,链表和顺序表两回事线性表的存储结构分为顺序存储(顺序表)和链式存储(链表)
打开App,查看更多内容
随时随地看视频慕课网APP