wangwan1 2015-04-20 12:48 采纳率: 0%
浏览 2089

顺序链表初始化错误,表的长度无法初始化

#include <stdio.h>
#include <stdlib.>

// squeue list operator

#define MAXSIZE 100

typedef int Dataype;

typedef struct
{
    Dataype data[MAXSIZE];
    int length;
}Sqlist;

// init a sqlist
void Init_sqlist(Sqlist *list)
{
    list = (Sqlist *)malloc(sizeof(Sqlist));
    list->length = 10;
    if (NULL == list)
    {
        perror("Init_sqlist error");
        exit(-1);
    }
}
// append element to sqlist
void Append_sqlist(Sqlist *list,Dataype x)
{
    printf("length %d\n", list->length);
    if (MAXSIZE !=list->length)
    {
        list->data[list->length] = x;
        list->length++;
    }
}
// insert element into sqlist at index i
void Insert_sqlist(Sqlist *list,int i,Dataype x)
{
    int j;
    if (MAXSIZE == list->length)
    {
        printf("Sqlist full\n");
        exit(-1);
    }
    if (i <0 || i > list->length)
    {
        printf("insert index error\n");
        exit(-1);
    }
    for (j = list->length-1; j >= i-1; j--)
    {
        list->data[j+1] = list->data[j];
    }
    list->data[i-1] = x;
    list->length = list->length +1;
}
// delete element which index i
void Delete_sqlist(Sqlist *list,int i)
{
    int j;
    if (i<0 || i>list->length)
    {
        printf("Delete_sqlist index erro\n");
        exit(-1);
    }
    if (0==list->length)
    {
        printf("empty sqlist\n");
        exit(-1);
    }
    for (j = i-1; j < list->length; ++j)
    {
        list->data[j] = list->data[j+1];
    }
}
// find element which x
int Locate_sqlist(Sqlist *list,Dataype x)
{
    int i;
    for (i = 0; i < list->length; ++i)
    {
        if (x == list->data[i])
        {
            return i;
        }
    }
    return -1;
}
//  print sqlist
void Print_sqlist(Sqlist *list)
{
    int i;
    if (0 != list->length)
    {
        for (i = 0; i < list->length; ++i)
        {
            printf("%d ", list->data[i]);
        }
        printf("\n");
    }
    else
        printf("empty\n");
}

int main(int argc, char const *argv[])
{
    int  i;
    Sqlist *list;
    Init_sqlist(list);
    for (i = 0; i < 10; ++i)
    {
        Append_sqlist(list,i);
    }
    Insert_sqlist(list,5,10);
    Print_sqlist(list);
    return 0;
}

  • 写回答

3条回答 默认 最新

  • devmiao 2015-04-20 12:52
    关注
     void Init_sqlist(Sqlist *list)
    ->
    void Init_sqlist(Sqlist *&list)
    
    评论

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码