|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
复制代码 |
|