标题:为什么程序一运行就崩溃
只看楼主
polo张
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-7-6
结帖率:0
已结贴  问题点数:20 回复次数:3 
为什么程序一运行就崩溃
#include <stdio.h>
#include <malloc.h>
#define MaxSize 50
typedef char ElemType;
typedef struct
{
ElemType data[MaxSize];/*存放顺序表元素*/
   int length;/*存放顺序表的长度*/

} SqList;/*顺序表的类型定义*/
void CreateList(SqList *&L,ElemType a[],int n)
/*建立顺序表*/
{

int i;
for (i=0;i<n;i++)
L->data[i]=a[i];
L->length=n;

}
void InitList(SqList *&L)
{

L=(SqList *)malloc(sizeof(SqList));/*分配存放线性表的空间*/
L->length=0;

}
void DestroyList(SqList *&L)
{

free(L);

}
int ListEmpty(SqList *L)
{

return(L->length==0);

}
int ListLength(SqList *L)
{

return(L->length);

}
void DispList(SqList *L)
{

int i;
if (ListEmpty(L)) return;
for (i=0;i<L->length;i++)
printf("%c ",L->data[i]);
printf("\n");

}
int GetElem(SqList *L,int i,ElemType &e)
{

if (i<1 || i>L->length)
return 0;
e=L->data[i-1];
return 1;

}
int LocateElem(SqList *L, ElemType e)
{

int i=0;
while (i<L->length && L->data[i]!=e) i++;
if (i>=L->length)
return 0;
else
return i+1;

}
int ListInsert(SqList *&L,int i,ElemType e)
{

int j;
if (i<1 || i>L->length+1)
return 0;
i--;/*将顺序表位序转化为elem下标*/
for (j=L->length;j>i;j--) /*将data[i]及后面元素后移一个位置*/
L->data[j]=L->data[j-1];
L->data[i]=e;
L->length++;/*顺序表长度增1*/
return 1;

}
int ListDelete(SqList *&L,int i,ElemType &e)
{

int j;
if (i<1 || i>L->length)
return 0;
i--;/*将顺序表位序转化为elem下标*/
e=L->data[i];
for (j=i;j<L->length-1;j++)/*将data[i]之后的元素前移一个位置*/
L->data[j]=L->data[j+1];
L->length--;/*顺序表长度减1*/
return 1;

}

int main()
{
    SqList *sq;
    ElemType x[6]= {5,8,7,2,4,9};
    CreateList(sq, x, 6);
    DispList(sq);
    return 0;
}



小弟绞尽脑汁也想不出错在哪里。。。。。这是李春葆的数据结构里线性存储的链表的代码
搜索更多相关主题的帖子: include 线性表 空间 元素 
2016-07-06 23:29
lanke711
Rank: 9Rank: 9Rank: 9
来 自:流浪在天国之路
等 级:蜘蛛侠
威 望:7
帖 子:317
专家分:1437
注 册:2015-7-16
得分:10 
程序代码:
int main()
{
    SqList *sq;
    sq=(SqList*)malloc(sizeof(SqList));//给sq分配空间
    ElemType x[6]= {5,8,7,2,4,9};
    CreateList(sq, x, 6);
    DispList(sq);
    return 0;
}


注释的地方是我加进去的。
楼主理解就好。C语言还加入了C++的指针引用。

普通人之所以普通,是因为他们普遍有一个通病,那就是认为自己永远普通。
千夫所指,我亦坚持。就算被所有人误解,我也照样守护这一切。
我们总是觉得,这些灵魂的表情,傲慢自大,目中无人,其实,真正目中无人的是我们。它们傲慢的不过是表情,而我们傲慢的却是行为!
记得,是为了忘记!
只要想着有那么一天,我就能忍受现在的每一天!
灾难并不可怕,可怕的是心中没有了希望。
你以为我在天堂,其实我正在路上。
当你觉得自己走不到终点的时候,请不要放弃。或许你的对手也是这种感觉。
2016-07-07 03:09
polo张
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-7-6
得分:0 
回复 2楼 lanke711
真的可以运行了  ,声明完一个指针型变量一定要动态的给他声明内存空间吗?
2016-07-07 21:19
ldsh304
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:242
专家分:755
注 册:2016-1-18
得分:10 
回复 3楼 polo张
不一定;
例如:
程序代码:
    int i;
    int *p;
    p = &i;
2016-07-07 22:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-466714-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.208221 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved