Liuucii 发表于 2020-3-12 10:24:42

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

代码可以正常输出,但系统显示以下错误
错误原因可能是:
非法的内存引用, 具体原因可能是:
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;
}

最后的魁拔 发表于 2020-3-12 10:50:47

请问,你这个是没有头节点,却有头指针把?
页: [1]
查看完整版本: 为什么我的代码提交上去系统显示有内存错误?求指点!