这段赋值语句
下面这段语句是错的
void setArc(char start, char end)
{
int i;
for(i=0;i<Vexnum;i++)
{
if(vex[i].ch == start)
{
while(vex[i].next)
{
vex[i] = *vex[i].next;
}
ArcNode *nNode = new ArcNode;
nNode->ch = end;
vex[i].next = nNode;
}
}
}
我改了一下,变成下面这段语句,为什么执行不会出问题?
void setArc(char start, char end)
{
int i;
for(i=0;i<Vexnum;i++)
{
if(vex[i].ch == start)
{
ArcNode *thisnode = &vex[i];
while(thisnode->next)
{
thisnode = thisnode->next;
}
ArcNode *nNode = new ArcNode;
nNode->ch = end;
thisnode->next = nNode;
}
}
}
源代码
#include<iostream>
using namespace std;
#define Max 100
class ArcNode{
public:
ArcNode *next;
char ch;
ArcNode()
{
next = NULL;
}
};
class List{
private:
int Bownum;
int Vexnum;
ArcNode *vex;
public:
List(int n, int k)
{
Vexnum = n;
Bownum = k;
vex = new ArcNode[Vexnum];
ArcNode *spare = new ArcNode();
int i;
for(i=0;i<n;i++)
vex[i].ch = 'A'+i;
}
void setArc(char start, char end)
{
int i;
for(i=0;i<Vexnum;i++)
{
if(vex[i].ch == start)
{
ArcNode *thisnode = &vex[i];
while(thisnode->next)
{
thisnode = thisnode->next;
}
ArcNode *nNode = new ArcNode;
nNode->ch = end;
thisnode->next = nNode;
}
}
}
void display()
{
int i;
for(i=0;i<Vexnum;i++)
{
cout<<i<<' ';
cout<<vex[i].ch<<'-';
ArcNode *tNode = &vex[i];
tNode = tNode->next;
while(tNode)
{
cout<<tNode->ch-'A'<<'-';
tNode = tNode->next;
}
cout<<'^'<<endl;
}
}
};
int main()
{
int t;
cin>>t;
while(t--)
{
int n, k;
cin>>n>>k;
List mylist(n, k);
while(k--)
{
char ch1, ch2;
cin>>ch1>>ch2;
mylist.setArc(ch1, ch2);
}
mylist.display();
}
return 0;
}