|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <iostream>
using namespace std;
typedef int Elemtype;
struct Node {
Elemtype data;
Node* next;
};
void CreatLinklist(Node* Linklist);
Node*& FindPrevious(Node* head, Node* goal);
Node*& Find(Node* head, int loc);
void Swap(Node* head, Node* f, Node* r);
void PrintLinklist(Node* Linklist);
void DeleteLinklist(Node* head);
int main()
{
Node* Linklist = new Node;
Linklist->next = NULL;
Node* head = Linklist;
CreatLinklist(Linklist);
//PrintLinklist(head);
int f, r;
cout << "请输入要交换的相邻位置:" << endl;
cin >> f >> r;
Swap(head, Find(head, f), Find(head, r));
PrintLinklist(head);
return 0;
}
void CreatLinklist(Node* Linklist)
{
int num;
cout << "请输入元素的个数" << endl;
cin >> num;
Node* p = Linklist;
for (int i = 0; i < num; i++) {
Node* newNode = new Node;
cin >> newNode->data;
p->next = newNode;
p = newNode;
}
p->next = NULL;
}
Node*& FindPrevious(Node* head, Node* goal)
{
Node* p = head;
while (p->next != goal) {
p = p->next;
//cout << "去尼玛的" << endl;
}
return p;
}
Node*& Find(Node* head, int loc)
{
Node* p = head;
for (int i = 0; i < loc; i++) {
p = p->next;
}
return p;
}
void Swap(Node* head, Node* f, Node* r)
{
Node* previous = FindPrevious(head, f);
f->next = r->next;
r->next = f;
if (previous != head) {
previous->next = r;
}
else {
head->next = r;
}
}
void PrintLinklist(Node* Linklist)
{
Node* p = Linklist->next;
cout << "以下是所有元素:" << endl;
while (p) {
cout << p->data << endl;
cout << "去尼玛的" << endl;
getchar();
getchar();
p = p->next;
}
}
void DeleteLinklist(Node* head)
{
Node* p = head->next;
while (p) {
Node* tmp = p;
p = p->next;
delete tmp;
}
delete head;
}
有大佬能帮我解释一下为什么同一段代码,在dev cpp和visual studio 中运行的结果不同吗?(压缩文件里面是对比的照片)
- Reference to stack memory associated with local variable 'p' returned [-Wreturn-stack-address]
复制代码
- Node*& FindPrevious(Node* head, Node* goal)
- {
- Node* p = head;
- while (p->next != goal) {
- p = p->next;
- //cout << "去尼玛的" << endl;
- }
- return p;
- }
- Node*& Find(Node* head, int loc)
- {
- Node* p = head;
- for (int i = 0; i < loc; i++) {
- p = p->next;
- }
- return p;
- }
复制代码
|
|