在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/C/ 順序表實(shí)現(xiàn)過(guò)程中沒(méi)有打印出任何值,求問(wèn)哪里出現(xiàn)問(wèn)題?

順序表實(shí)現(xiàn)過(guò)程中沒(méi)有打印出任何值,求問(wèn)哪里出現(xiàn)問(wèn)題?

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

#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10

#define OK 0
#define error -1
#define OVERFLOW -2

typedef int ElemType;

typedef struct _SqList
{
    ElemType *elem;
    int length;        //表長(zhǎng)度
    int listsize;    //當(dāng)前分配的存儲(chǔ)容量
}SqList,*pSqList;

//增加存儲(chǔ)空間容量
int addcapacity(SqList *sqlist)
{
    ElemType *newbase;    //分配一個(gè)新的基址
    newbase = (ElemType *)malloc((sqlist->listsize + LISTINCREMENT) * sizeof(ElemType));
    if (newbase == NULL)
        exit(OVERFLOW);
    sqlist->elem = newbase;
    sqlist->listsize += LISTINCREMENT;
    return OK;
}

//初始化順序表
int InitList_sq(SqList *sqlist)
{
    if (sqlist == NULL)
        return error;
    //給線性表分配初始容量
    sqlist->elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));
    if (!sqlist->elem)
        exit(OVERFLOW);
    sqlist->length = 0;
    sqlist->listsize = LIST_INIT_SIZE;
    return OK;
}

//在表的第i個(gè)位置插入新元素newelem
int ListInsert(SqList *sqlist, int i, ElemType newelem)
{
    if (sqlist == NULL || i<1 || i>sqlist->length + 1)
    {
        return error;
    }
    if (sqlist->length > sqlist->listsize)    //檢查線性表是否已滿,如果滿了就擴(kuò)充空間容量
    {
        if (addcapacity(sqlist) != OK)
            return OVERFLOW;
    }
    //將第i個(gè)元素以及第i個(gè)元素后面的元素后移
    for (int j = sqlist->length; j >= i; j--)
        sqlist->elem[j] = sqlist->elem[j - 1];
    sqlist->elem[i - 1] = newelem;
    sqlist->elem++;
    return OK;
}

//順性表輸出
void Print_list(SqList *sqlist)
{
    int i;
    for (i = 0; i < sqlist->length; i++)
        printf("%d  ", sqlist->elem[i]);
    printf("\n");
}

int main()
{
    SqList L;
    InitList_sq(&L);

    for (int i = 0; i < 10; i++)    //將0-9插入順序表
    {
        ListInsert(&L, i + 1, i);
    }
    Print_list(&L);
    return 0;
}

本來(lái)是想打印出來(lái)0-9的,可是沒(méi)有輸出任何值?這是哪個(gè)環(huán)節(jié)出現(xiàn)問(wèn)題了?

回答
編輯回答
野橘
#include <stdio.h>
#include <stdlib.h>

#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10

#define OK 0
#define error -1
#define OVERFLOW -2

typedef int ElemType;

typedef struct _SqList
{
    ElemType *elem;
    int length;        //表長(zhǎng)度
    int listsize;    //當(dāng)前分配的存儲(chǔ)容量
}SqList,*pSqList;

//增加存儲(chǔ)空間容量
int addcapacity(SqList *sqlist)
{
    ElemType *newbase;    //分配一個(gè)新的基址
    newbase = (ElemType *)malloc((sqlist->listsize + LISTINCREMENT) * sizeof(ElemType));
    if (newbase == NULL)
        exit(OVERFLOW);
    sqlist->elem = newbase;
    sqlist->listsize += LISTINCREMENT;
    return OK;
}

//初始化順序表
int InitList_sq(SqList *sqlist)
{
    if (sqlist == NULL)
        return error;
    //給線性表分配初始容量
    sqlist->elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));
    if (!sqlist->elem)
        exit(OVERFLOW);
    sqlist->length = 0;
    sqlist->listsize = LIST_INIT_SIZE;
    return OK;
}

//在表的第i個(gè)位置插入新元素newelem
int ListInsert(SqList *sqlist, int i, ElemType newelem)
{
    if (sqlist == NULL || i<1 || i>sqlist->length + 1)
    {
        return error;
    }
    if (sqlist->length > sqlist->listsize)    //檢查線性表是否已滿,如果滿了就擴(kuò)充空間容量
    {
        if (addcapacity(sqlist) != OK)
            return OVERFLOW;
    }
    //將第i個(gè)元素以及第i個(gè)元素后面的元素后移
    for (int j = sqlist->length; j >= i; j--)
        sqlist->elem[j] = sqlist->elem[j - 1];
    sqlist->elem[i - 1] = newelem;
    //TODO
    // sqlist->elem++;
    sqlist->length ++;
    return OK;
}

//順性表輸出
void Print_list(SqList *sqlist)
{
    int i;
    for (i = 0; i < sqlist->length; i++)
        printf("%d  ", sqlist->elem[i]);
    printf("\n");
}

int main()
{
    SqList L;
    InitList_sq(&L);

    for (int i = 0; i < 10; i++)    //將0-9插入順序表
    {
        int result =  ListInsert(&L, i + 1, i);
        printf("%d",result);
    }
    Print_list(&L);
    return 0;
}

請(qǐng)看TODO部分

2018年5月14日 08:39