首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

顺序表初始化有关问题

2012-09-17 
顺序表初始化问题IDE:clockblocks语法没有错误,运行时,运行InitList_Sq函数后出现应用程序错误~为什么?C/C

顺序表初始化问题
IDE:clockblocks
语法没有错误,运行时,运行InitList_Sq函数后出现应用程序错误~为什么?

C/C++ code
#include <stdio.h>#define LIST_INIT_SIZE 1#define LISTINCREMENT 1struct SqList{    int *elem;    int length;//元素个数    int listsize;//存储空间大小};void InitList_Sq(struct SqList *L){    L->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));    L->length=0;    L->listsize=1;    printf("请为初始化顺序表输入递增有序的整数:\n");    int value;    while(scanf("%d",&value)!=EOF)//回车 Ctrl+Z 回车    {            if(L->length==L->listsize)            {                L->elem=(int *)realloc(L->elem,(LIST_INIT_SIZE+LISTINCREMENT)*sizeof(int));            }            L->elem[L->length++]=value;    }}void Print_Sq(struct SqList *L){    int counter;    for(counter=0;counter<L->length;counter++)        printf("%d ",L->elem[counter]);    printf("\n");}


[解决办法]
L->elem=(int *)realloc(L->elem,(LIST_INIT_SIZE+LISTINCREMENT)*sizeof(int));
==>
L->elem=(int *)realloc(L->elem,(L->listsize+LISTINCREMENT)*sizeof(int));
L->listsize += LISTINCREMENT;
[解决办法]
楼主该不会是在主函数里面用野指针了吧?
我用下面的代码没有问题……
C/C++ code
#include <malloc.h>#include <string.h>#include <stdio.h>#define LIST_INIT_SIZE 1#define LISTINCREMENT 1struct SqList{    int *elem;    int length;//元素个数    int listsize;//存储空间大小};void InitList_Sq(struct SqList *L){    L->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));    L->length=0;    L->listsize=1;    printf("请为初始化顺序表输入递增有序的整数:\n");    int value;    while(scanf("%d",&value)!=EOF)//回车 Ctrl+Z 回车    {            if(L->length==L->listsize)            {                L->elem=(int *)realloc(L->elem,(L->length+LISTINCREMENT)*sizeof(int));//mark            }            L->elem[L->length]=value;//mark            L->length+=LISTINCREMENT;//mark                }}void Print_Sq(struct SqList *L){    int counter;    for(counter=0;counter<L->length;counter++)        printf("%d ",L->elem[counter]);    printf("\n");}int main(){   struct  SqList L;   InitList_Sq(&L);   Print_Sq(&L);   system("pause");}
[解决办法]
to楼上
你的指针很野……
L都没有分配空间╮(╯_╰)╭
[解决办法]
探讨
to楼上,
int main()
{
  struct  SqList *L;
  InitList_Sq(L);
  Print_Sq(L);
}

我是这样写的,传说中的野指针?

[解决办法]

#include <stdio.h>
#include "stdlib.h"
#define LIST_INIT_SIZE 1
#define LISTINCREMENT 1

struct SqList
{
int *elem;
int length;//元素个数
int listsize;//存储空间大小
};
struct SqList *L=(struct SqList *)malloc(sizeof(struct SqList));;
void InitList_Sq()
{
 
L->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
L->length=0;
L->listsize=1;
printf("请为初始化顺序表输入递增有序的整数:\n");
int value;
while(scanf("%d",&value))//回车 Ctrl+Z 回车
{

if(L->length==L->listsize)
{
L->elem=(int *)realloc(L->elem,(LIST_INIT_SIZE+LISTINCREMENT)*sizeof(int));
}
L->elem[L->length++]=value;
}
}



void Print_Sq(struct SqList *L)
{
int counter;
for(counter=0;counter<L->length;counter++)
printf("%d ",L->elem[counter]);
printf("\n");
}

void main()
{
 
 InitList_Sq();
 Print_Sq(L);
}

热点排行