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

查看:98
本文介绍了java - 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;

typedef struct
{
    int data[MAXSIZE];
    int len;                
} Sqlist;
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;
}
bool ListDelete(Sqlist *L,int n,ElemType *e)
{
    int i;
    if(L->len==0)
        return 0;
    for(i=n-1;i<=MAXSIZE-1;i++)
    {
        if(i==MAXSIZE-1)
            break;
        L->data[i]=L->data[i+1];
    }
    L->len--;
    return 1;

}

void ShowList(Sqlist L)
{
    int i;
    for(i=0; i<L.len; i++)
        printf("%d\n",L.data[i]);
}
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);
    
}

解决方案

朋友,这里初始化的应该是顺序表,因为在定义结构时有顺序表长度这个关键属性,所以初始化顺序表即将其长度初始为零。
这里没有链表的事情,链表和顺序表两回事
线性表的存储结构分为顺序存储(顺序表)和链式存储(链表)

这篇关于java - c语言 数据结构 顺序存储结构线性表初始化问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆