weixin_45687336 2020-04-27 22:49 采纳率: 0%
浏览 164

做有关单链表的数据结构实验时,程序不报错,但也不完全运行

问题:有一个带头结点的单链表L=(a1,b1,a2,b2,…,an,bn),设计一个算法将其拆分成两个带头结点的单链表L1和L2,其中L1=(a1, a2,…,an),L2=(b1,b2,…,bn),要求L1使用L的头结点。

头文件:
#include
using namespace std;
#include
#include
#include

typedef int ElemType;
typedef struct  _tag_LinkNode
{
    ElemType date;
    struct _tag_LinkNode *next;
}LinkNode;

void split(LinkNode *&list, LinkNode *&list1, LinkNode *&list2);
void CreateListR(LinkNode *&list, ElemType a[], int n);
void DestroyList(LinkNode *&list);
void DispList(LinkNode *list);

实现文件:

using namespace std;
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef int ElemType;
typedef struct  _tag_LinkNode
{
    ElemType date;
    struct _tag_LinkNode *next;
}LinkNode;

void split(LinkNode *&list, LinkNode *&list1, LinkNode *&list2)
{
    list1 = list;
    list2 = (LinkNode *)malloc(sizeof(LinkNode));
    list2->next  = NULL;
    LinkNode *p = list->next, *q , *r1 = list1, *r2 =list2;
    while(p!=NULL)
    {
        q =p->next;
        r1->next = p, r2->next = q;
        r1 = p, r2 = q;
        p = q->next;
    }
        r1->next = r2->next=  NULL;
}


void CreateListR(LinkNode *&list, ElemType a[], int n)
{
    LinkNode *p= list ,*q;
    for(int i=0;i<n;i++)
    {
        q = (LinkNode *)malloc(sizeof(LinkNode));
        q->date = a[i];
        p->next = q;
        p = q;
    }
    p->next=NULL;
}

void DestroyList(LinkNode *&list)
{
    LinkNode *pre=list, *q=list->next;
    while(q!=NULL)
    {
        free(pre);
        pre = q;
        q = q->next;    
    }
    free(pre);
}

void DispList(LinkNode *list)
{
    LinkNode *p=list;
    while(p->next!=NULL)
    {
        p = p->next;
        cout<<p->date<<' ';
    }
}


测试文件:

#include<iostream>
using namespace std;
#include "SplitLinkList.h"

int main()
{
    LinkNode *L1, *L2, *L;
    ElemType a[10] = {10, 30, 50, 70, 90, 80, 60, 40, 20, 0};
    CreateListR(L, a, 10);
    cout<<"建表结果:";
    DispList(L);

    split(L, L1 , L2);

    cout<<"L1:";
    DispList(L1);
    cout<<"L2:";
    DispList(L2);
    DestroyList(L1);
    DestroyList(L2);

    return 0;
}

结果:
图片说明

  • 写回答

1条回答 默认 最新

  • Iambinary 2020-04-28 08:15
    关注

    Runtime Error(RE),很可能是指针操作不当。

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog