鱼C论坛

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

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

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

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

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

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


代码如下:
  1. #include <iostream>
  2. #include<stdio.h>   //用于scanf,printf标准输入输出
  3. #include<stdlib.h>  //用于malloc,free内存申请与释放
  4. using namespace std;
  5. typedef struct Node *LinkList;
  6. struct Node
  7. {
  8.      int data;
  9.      LinkList next;
  10. };
  11. LinkList CreatFromTail()   //构建单链表
  12. {
  13.      LinkList q,r,L;
  14.      int i,n;
  15.      L=(Node*)malloc(sizeof(Node));
  16.      r=L;
  17.      scanf("%d",&n);
  18.      for(i=0;i<n;i++)
  19.      {
  20.           q=(Node*)malloc(sizeof(Node));
  21.           scanf("%d",&q->data);
  22.           r->next=q;
  23.           r=q;
  24.      }
  25.      r->next=NULL;
  26.      return L;
  27. }
  28. LinkList merge(LinkList a,LinkList b)    //合并两个链表
  29. {
  30.      LinkList p=a->next;
  31.      while(p->next)
  32.      {
  33.           p=p->next;
  34.      }
  35.      p->next=b->next;
  36.      free(b);
  37.      return a;
  38. }
  39. LinkList DeleteSame(LinkList L)    //删除链表中的重复元素
  40. {
  41.      LinkList p=L->next,q,r;
  42.      while(p!=NULL)
  43.      {
  44.           r=p->next;
  45.           q=p;
  46.           while(r!=NULL)
  47.           {
  48.                if(r->data==p->data)
  49.                {
  50.                     q->next=r->next;
  51.                     r=r->next;
  52.                }
  53.                else
  54.                {
  55.                     q=q->next;
  56.                     r=r->next;
  57.                }
  58.           }
  59.           p=p->next;
  60.      }
  61.      return L;
  62. }
  63. LinkList sort(LinkList L)    //排序
  64. {
  65.      LinkList p=L->next,q,r;
  66.      if(p!=NULL)
  67.      {
  68.           r=p->next;
  69.           p->next=NULL;
  70.           p=r;
  71.           while(p!=NULL)
  72.           {
  73.                r=p->next;
  74.                q=L;
  75.                while(q->next!=NULL&&q->next->data<p->data)
  76.                     q=q->next;
  77.                p->next=q->next;
  78.                q->next=p;
  79.                p=r;
  80.           }
  81.      }
  82.      return L;
  83. }
  84. void show(LinkList l)    //输出链表
  85. {
  86.      LinkList p=l;
  87.      while(p)
  88.      {
  89.           p=p->next;
  90.           printf("%d",p->data);
  91.           printf(" ");
  92.      }
  93. }
  94. int main()
  95. {
  96.      LinkList w,v,y,z,s;
  97.      w=CreatFromTail();
  98.      v=CreatFromTail();
  99.      y=merge(w,v);
  100.      s=DeleteSame(y);
  101.      z=sort(s);
  102.      show(z);
  103.      return 0;
  104. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-12 10:50:47 | 显示全部楼层
请问,你这个是没有头节点,却有头指针把?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-8 14:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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