网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月22日
漏签
0
天
c语言吧
关注:
790,806
贴子:
4,295,086
看贴
图片
吧主推荐
视频
游戏
14
回复贴,共
1
页
<<返回c语言吧
>0< 加载中...
求助
各位大佬,为什么这个malloc分配不了
只看楼主
收藏
回复
遗留的木星
低能力者
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
之前都很正常可以运行的,单向的线性链表弄了下没有问题,然后我照着书上的双向链表写的,开始也没问题
把基本操作那些函数写了写然后尝试放点数据进去,都是可以的,
然后面继续加内容突然程序运行不了,调式发现走到malloc这里就会跳这个
GTA小鸡
吧主
13
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
你调用InitDList传的实参是空指针,导致形参L在对空指针解引用
遗留的木星
低能力者
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这个是双向链表的定义,还有创造新链表的函数
遗留的木星
低能力者
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
把null去掉了,但是还是会这样到malloc这里卡住
遗留的木星
低能力者
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这个是链表操作的代码DoubleList.h
#include <stdio.h>
#include <stdlib.h>
typedef int Elemtype;
typedef struct DNode
{
Elemtype data;//数据
struct DNode *prior;
struct DNode *next;//前驱节点和后继节点
}DNode,*DoubleList;
int ListLength(DoubleList L)
{
DNode *p;
p=L->next;
int j=0;//记录长度
while(p!=NULL)
{
p=p->next;
j++;
}
return j;
}
void InitDList(DoubleList *L)//创建一个空链表
{
*L=(DoubleList)malloc(sizeof(DNode));//(数据类型)malloc(分配的空间大小);sizeof(求大小的数据类型)
if(L==NULL)
{
printf("InitList error\n");
}
(*L)->next=NULL;
(*L)->prior=NULL;
}
void DlinkIns(DoubleList L,int i,Elemtype e)
{
DNode *s,*p;
if((ListLength(L)+1<i)||(i<=0))//合法性检查
{
printf("DlinkIns error\n");
}
else
{
int n=0;//寻找第i个位置并且让p指向它
p=L;
for(n=1;n<i;n++)
p=p->next;
s=(DNode*)malloc(sizeof(DNode));
//主要的插入操作
if(s)//如果s不为空
{
if(p->prior)//非首位的插入操作
{
s->data=e;
s->prior=p->prior;
p->prior->next=s;
s->next=p;
p->prior=s;
}
else//首位插入操作
{
s->data=e;
s->prior=p->prior;
L=s;
s->next=p;
p->prior=s;
}
}
}
}
遗留的木星
低能力者
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这个是测试用的代码
#include <stdio.h>
#include "DoubleList.h"
int main()
{
DoubleList *L;
InitDList(L);
int i;
for(i=0;i<5;i++)
{
DlinkIns(*L,1,i);
}
DNode *p;
p=*L;
for(i=0;i<5;i++)
{
p=p->next;
printf("%d",p->data);
}
printf("end\n");
return 0;
}
遗留的木星
低能力者
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
贴吧把我缩进吞了
遗留的木星
低能力者
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
啊,问题解决了,我的L是个二重指针,但是只有分配了一个空间的操作,所以暴毙了
遗留的木星
低能力者
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
感谢各位大佬解答
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示