鱼C论坛

 找回密码
 立即注册
查看: 2644|回复: 1

为什么我的代码提交上去系统显示有内存错误?求指点!

[复制链接]
发表于 2020-3-12 10:24:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码可以正常输出,但系统显示以下错误
错误原因可能是:
非法的内存引用, 具体原因可能是:
1.数组越界使用;
2.指针的错误使用, 一般是对非用户区的地址空间进行读或者写操作;
3.越权操作文件指针, 程序中却未捕捉该类错误;
4.栈溢出, 一般是因为过多的递归调用或者过大的临时变量导致;5.程序使用的内存超过了题目设定的上限。


代码如下:
#include <iostream>
#include<stdio.h>   //用于scanf,printf标准输入输出
#include<stdlib.h>  //用于malloc,free内存申请与释放
using namespace std;
typedef struct Node *LinkList;
struct Node
{
     int data;
     LinkList next;
};
LinkList CreatFromTail()   //构建单链表
{
     LinkList q,r,L;
     int i,n;
     L=(Node*)malloc(sizeof(Node));
     r=L;
     scanf("%d",&n);
     for(i=0;i<n;i++)
     {
          q=(Node*)malloc(sizeof(Node));
          scanf("%d",&q->data);
          r->next=q;
          r=q;
     }
     r->next=NULL;
     return L;
}
LinkList merge(LinkList a,LinkList b)    //合并两个链表
{
     LinkList p=a->next;
     while(p->next)
     {
          p=p->next;
     }
     p->next=b->next;
     free(b);
     return a;
}
LinkList DeleteSame(LinkList L)    //删除链表中的重复元素
{
     LinkList p=L->next,q,r;
     while(p!=NULL)
     {
          r=p->next;
          q=p;
          while(r!=NULL)
          {
               if(r->data==p->data)
               {
                    q->next=r->next;
                    r=r->next;
               }
               else
               {
                    q=q->next;
                    r=r->next;
               }
          }
          p=p->next;
     }
     return L;
}
LinkList sort(LinkList L)    //排序
{
     LinkList p=L->next,q,r;
     if(p!=NULL)
     {
          r=p->next;
          p->next=NULL;
          p=r;
          while(p!=NULL)
          {
               r=p->next;
               q=L;
               while(q->next!=NULL&&q->next->data<p->data)
                    q=q->next;
               p->next=q->next;
               q->next=p;
               p=r;
          }
     }
     return L;
}
void show(LinkList l)    //输出链表
{
     LinkList p=l;
     while(p)
     {
          p=p->next;
          printf("%d",p->data);
          printf(" ");
     }
}
int main()
{
     LinkList w,v,y,z,s;
     w=CreatFromTail();
     v=CreatFromTail();
     y=merge(w,v);
     s=DeleteSame(y);
     z=sort(s);
     show(z);
     return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-12 10:50:47 | 显示全部楼层
请问,你这个是没有头节点,却有头指针把?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-16 05:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表