Code Bye

关于链表的问题

问题在代码部分,这是缩写版的,,,纠结
#include <iostream>
using namespace std;
struct Node
{
int sx;
int sy;
Node *next;
};
class Test1
{
Node *head;
int x;
int y;
public:
Test1(int _x , int _y)
:x(_x),y(_y){}
int get_x()
{
return x;
}
int get_y()
{
return y;
}
void Initiate()
{
head = new Node;
head->sx = x;
head->sy = y;
head->next = NULL;
}
void Add(int tx ,int ty)//在链表头添加元素
{
Node *temp = new Node;
temp->sx = tx;
temp->sy = ty;
temp->next = head;
head = temp;
}
void Del()//在链表末尾删除元素
{
Node *temp = head;
while(temp->next != NULL)
temp = temp->next;
delete temp;
temp = NULL;
}
void Print()//为什么打印这里会无线执行?
{
Node *temp = head;
while(temp->next != NULL)
cout << temp->sx << “–” << temp->sy << endl;
}
};
int main()
{
int i = 1 , j = 1;
Test1 ts(i , j);
ts.Initiate();
for(int k = 0 ; k < 3 ; ++k)
ts.Add(++i , ++j);
cout << “ppp” << endl;
for(int k = 0 ; k < 4 ; ++k)
ts.Print();
return 0;
}
解决方案

40

每次while(temp->next != NULL)循环都没有改变temp,当然一直在循环了
你应该每次循环让temp = temp->next吧

40

#include <iostream>
using namespace std;
struct Node
{
	int sx;
	int sy;
	Node *next;
};
class Test1
{
	Node *head;
	int x;
	int y;
public:
	Test1(int _x, int _y)
		:x(_x), y(_y){}
	int get_x()
	{
		return x;
	}
	int get_y()
	{
		return y;
	}
	void Initiate()
	{
		head = new Node;
		head->sx = x;
		head->sy = y;
		head->next = NULL;
	}
	void Add(int tx, int ty)//在链表头添加元素
	{
		Node *temp = new Node;
		temp->sx = tx;
		temp->sy = ty;
		temp->next = head;
		head = temp;
	}
	void Del()//在链表末尾删除元素
	{
		Node *temp = head;
		while (temp->next != NULL)
			temp = temp->next;
		delete temp;
		temp = NULL;
	}
	void Print()//为什么打印这里会无线执行?
	{
		Node *temp = head;
		while (temp->next != NULL)
		{
			cout << temp->sx << "--" << temp->sy << endl;
			temp = temp->next;
		}

	}
};
int main()
{
	int i = 1, j = 1;
	Test1 ts(i, j);
	ts.Initiate();
	for (int k = 0; k < 3; ++k)
		ts.Add(++i, ++j);
	cout << "ppp" << endl;
	for (int k = 0; k < 4; ++k)
		ts.Print();
	return 0;
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于链表的问题