线性表-c语言程序编译都没问题,运行就崩溃,求解!!!

问题描述

c语言程序编译都没问题,运行就崩溃,求解!!!
#include
#include
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define OVERFLOW -1
#define OK 1
#define ERROR 0
typedef int ElemType;
typedef struct{
ElemType *elem;//存储空间基址
int length;//当前长度
int listsize;//当前分配的存储容量
}SqList;

int InitList_Sq(SqList L){
//构造一个空的线性表
L.elem = (ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if (!L.elem)exit(OVERFLOW);//存储分配失败
L.length = 0;//空表长度为0
L.listsize = LIST_INIT_SIZE;//初始存储容量
return OK;
}//InitList_Sq

int ListInsert_Sq(SqList Lint i ElemType e){
//在线性顺序表L中第i个位置之前插入新的元素e,
//I的合法值为1<=i= ElemType *q *p;
ElemType *newbase;
if (iL.length + 1)return ERROR;//i值不合法
if (L.length >= L.listsize){//当前存储空间已满,增加分配
newbase = (ElemType*)realloc(L.elem (L.listsize +LISTINCREMENT)*sizeof(ElemType));
if (!newbase)exit(OVERFLOW);//存储分配失败
L.elem = newbase;//新基址
L.listsize += LISTINCREMENT;// 增加存储容量
}
q = &(L.elem[i - 1]);//q为插入位置
for (p = &(L.elem[L.length - 1]); p >= q; --p) *(p + 1) = *p;//插入位置及之后的元素右移
*q = e;//插入e
++L.length;//表长增1
return OK;
}//ListInsert_Sq

ElemType ListDelete_Sq(SqList L int i ElemType e){
//在顺序表L中删除第i个元素,并用e返回值
//i的合法值为1=<i<=ListLength_Sq(L)
ElemType *q *p;
p = &(L.elem[i - 1]);//p为被删除元素的位置
e = *p;//被删除元素的值赋给e
q = L.elem + L.length - 1;//表尾元素的位置
for (++p; p <= q; ++p) *(p - 1) = *p;//被删除元素之后的元素左移
--L.length;//表长减1
return e;
}//ListDrlete_Sq
int LocateElem_Sq(SqList L ElemType e){
//在顺序线性表L中查找第一个与e满足compare()的元素的位序
//若找到,则返回其在L中的位序,否则返回0
ElemType *p;
int i = 1;//i的初值为第一个元素的位序
p = L.elem;//p的初值为第一个元素的存储位置
while (i <= L.length && *p++!=e)++i;
if (i <= L.length)return i;
else return 0;
}//LocateElem_Sq
int SqList_print(SqList L){
int i;
for( i = 0;i < L.length;i++)
{
printf(""%d""L.elem[i]);
}
return 0;
}
int Show_UI(){
printf(""-----------------Welcome-----------------
"");
printf(""0:插入元素,请输入插入的位置和相应元素
"");
printf(""1:删除元素,请输入需要删除什么位置的元素
"");
printf(""2:查找元素,请输入需要查找的元素
"");
printf(""3:结束程序
"");
printf(""-------------------END-------------------
"");
return 0;
}

int main(){
int ch;
int i e;
SqList L;
int a=0;
Show_UI();
while (a == 0){
scanf(""%d"" &ch);
switch (ch)
{
case 0:{
scanf(""%d%d"" &i &e);
ListInsert_Sq(L i e);
printf(""在第%d个位置,插入了元素%d
"" i e);
printf(""%d"" SqList_print(L)); }break;//插入元素
case 1:{
scanf(""%d"" &i);
printf(""删除了第%d个位置的元素%d
"" i ListDelete_Sq(L i e));
printf(""%d"" SqList_print(L)); }break; //删除元素
case 2:{
ElemType *p;
scanf(""%d"" e);
LocateElem_Sq(L e);
if (i != 0){
printf(""您查找的元素%d在第%d个位置
"" e i);
}
else{
printf(""您查找的元素不合法
"");
}}break; //查找线性表中是否含有用户所输入的元素
case 3: a = 1; break; //出口,结束程序
default:printf(""您输入的选择不在可选范围内,请重新选择相应功能!
""); break;
}
Show_UI();
}
return 0;
}

解决方案

首先,case1和case2代码里面没看到对ElemType *elem; 初始化;其它各个子函数都没有对空指针进行判断处理。最后main函数结束时也没有对内存进行释放的操作,有内存泄漏的隐患。
至于调试方法个人建议,在代码量不大的情况下,可以多添加一些打印进行定位即可。

解决方案二:
在linux下编译运行c语言程序
Linux 下编译并运行C语言程序

解决方案三:
代码不完整……而且错误是什么

解决方案四:
可否给出奔溃是的错误,或者啥可以确定的东西?

解决方案五:
单步调试,可以知道是在什么地方崩溃

时间: 2024-10-01 00:06:13

线性表-c语言程序编译都没问题,运行就崩溃,求解!!!的相关文章

运行失败-组建编译都没问题,但是运行时总是会出现这样的提示

问题描述 组建编译都没问题,但是运行时总是会出现这样的提示 for information on you program can cause an assertion failuresee the Visual C++documention on asser这是说哪里出错了?求好心人指教程序是利用鼠标画一个面状区域,其中左键画定点并连线,右键闭合并绘制晕线,晕线是单独写的一个函数,在鼠标右键响应函数下调用的 解决方案 这种一般是逻辑问题,你得单步调试啊

测试-c语言程序编译出错error: syntax error before &amp;amp;quot;typedef&amp;amp;quot;

问题描述 c语言程序编译出错error: syntax error before "typedef" 设计的一个顺序循环队列和测试函数,结果编译的时候就有好多error: syntax error before ""不知道要怎么改,求帮助~ 这是我的代码: 头文件: #include typedef struct SeqCQueue { DataType queue[MaxQueueSize]; int MaxQueueSize; int rear; int fro

结构体 赋值 初始化-程序编译无问题,运行结果却因数据不同出现差错,新人求解!!!

问题描述 程序编译无问题,运行结果却因数据不同出现差错,新人求解!!! #include #include struct employee{ char name[20]; int age; char sex; float salary;};void main(){ struct employee *p; p = (struct employee *)malloc(sizeof(struct employee)); gets(p->name); p->age = 26; p->sex =

指针-这段代码中的插入函数编译没有错误,运行就崩溃?其它函数都经过编译了没有错误?不知道是什么问题?

问题描述 这段代码中的插入函数编译没有错误,运行就崩溃?其它函数都经过编译了没有错误?不知道是什么问题? #include #include #include typedef struct POINT { int row; int col; struct POINT *next; }POINT; void initPointLink(POINT **pointLinkHeadPointer); void showPoints(POINT *pointLinkHead); void showOne

vs2003运行程序编译没有错误,运行出现问题

问题描述 vs2003运行程序编译没有错误,运行出现问题 无法启动此程序,因为计算机中丢失vsgu2_0D.dll.尝试重新安装该程序以解决此问题- 解决方案 你找找vsgu2_0D.dll 看看是干嘛用的. 解决方案二: 下载DLL文件复制到文件安装目录下即可,http://www.zhaodll.com/dll/v/201207/113362.html 32位系统也可复制到c:windowssystm32目录下 同理64位系统可复制到c:windowssyswow64目录下 解决方案三: 环

c语言-我的一段C语言程序在VC6.0上面运行不出来,貌似是头文件的问题,求帮忙

问题描述 我的一段C语言程序在VC6.0上面运行不出来,貌似是头文件的问题,求帮忙 #include"C:UsershpDesktopcomplex.h" main() { complex *a; int N=1024; //给a赋值 fft(a,N) } int fft(complex *a,int l) { const double pai=3.141592653589793; complex u,w,t; unsigned n=1,nv2,nm1,k,le,lei,ip; uns

线性表-数据结构 算法如何编译运行··跪求各位路过的大神帮帮忙啊

问题描述 数据结构 算法如何编译运行··跪求各位路过的大神帮帮忙啊 #include #include #define ERROR 0 #define OK 1 typedef int Status; typedef int ElemType;//顺序表测试用 const int MaxSize=100; //100只是示例性的数据,可以根据实际问题具体定义 const int Increasement=10; typedef struct{ ElemType *elem; int length

程序猿都没对象,JS竟然有对象?

现在做项目基本是套用框架,不论是网上的前端还是后端框架,也会寻找一些封装好的插件拿来即用,但还是希望拿来时最好自己过后再回过头了解里面的原理,学习里面优秀的东西,不论代码封装性,还是小到命名. 好吧,扯远了,在这里要讲的是大家前端用得多的JS,可能接触最多的是Jquery,但原生的JS最好还是要了解的,至少能看懂别人的代码,然后学习. 平时用得多的无非是if for 逻辑处理字符串,截断字符串,数组,然后是查找元素,对元素背景什么的属性操作,这些都是些实用性上的东西,这里讲一些更深入点的,如何理

C语言线性表的顺序表示与实现实例详解_C 语言

1.概述 通常来说顺序表是在计算机的内存中以数组的形式保存的线性表,是用一组地址连续的存储单元依次存储数据元素的线性数据结构.线性表采用顺序存储的方式存储就称之为顺序表.顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中. 将表中元素一个接一个的存入一组连续的存储单元中,这种存储结构就是顺序结构. 采用顺序存储结构的线性表简称为" 顺序表".顺序表的存储特点是:只要确定了起始位置,表中任一元素的地址都通过下列公式得到:LOC(ai)=LOC(a1)+(i-1)*L 1≤