大家能给看看为什么这串代码在Visual Studio 2017(显示未加载wntdll.pdb)和 VC++6.0上面无法运行,却能在DeVC++上运行呢?
#include<iostream>
#include<Windows.h>
using namespace std;
int const N = 9;
struct Node{ int data; Node *next;};
class LinkList
{
public:
LinkList();
LinkList(int a[], int n);
~LinkList();
void PrintList();
void Rearrange();
void Combine(LinkList &A, LinkList B);
private:
Node *first;
};
LinkList::LinkList()
{
first = new Node;
first->next = NULL;
}
LinkList::LinkList(int a[], int n)
{
first = new Node;
first->next = NULL;
Node *q = first;
for (int i = 0; i < n; ++i)
{ Node *p = new Node;
p->data = a[i];
p->next = q->next;
q->next = p;
q = p;
}
}
LinkList::~LinkList()
{
while (first->next != NULL)
{
Node *p = first;
first = first->next;
delete p;
}
}
void LinkList::PrintList()
{
Node *p = first->next;
cout << "链表:" << endl;
while (p != NULL)
{
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
void LinkList::Rearrange()
{
Node *p, *q, *t,*r;
p = first->next;
r = q = t = p;
p = p->next;
while (p != NULL)
{
t = q;
q = p;
p = p->next;
q->next = t;
} first->next = q;
r->next = NULL;
}
void LinkList::Combine(LinkList &A, LinkList B)
{
Node *p, *q, *pre,*qre;
pre = A.first;
p = pre->next;
qre = B.first;
q = qre->next;
while (p != NULL&&q != NULL)
{
if (p->data <= q->data)
{
pre = p;
p = pre->next;
}
else
{
qre = q;
q = qre->next;
pre->next = qre;
qre->next = p;
pre = qre;
}
}
if (q!=NULL)
pre->next = q;
delete B.first;
}
int main()
{
int a[N] = { 1,2,3,4,5,6,7,8,9 };
LinkList L(a, N);
L.PrintList();
LinkList S(a,N);
L.Combine(L, S);
L.Rearrange();
L.PrintList();
system("pause");
return 0;
}