#include<iostream>
using namespace std;
struct chainNode {
int element;
chainNode * next;
};
int main() {
struct chainNode p0;
p0.element = 11;
struct chainNode p1;
p1.element = 13;
p0.next = &p1;
struct chainNode p2;
p2.element = 15;
p1.next = &p2;
struct chainNode p3;
p3.element = 17;
p2.next = &p3;
cout << p0.element << " ";
cout << p0.next->element<<" ";
cout << p0.next->next->element<<" ";
cout << p0.next->next->next->element<<" ";
return 0;
}
创建一个chainNode结构体,结构体里包含一个元素和一个chainNode结构体指针。
此时我创建一个结构体p和一个结构体q,通过p.element = 11;和q.element = 13;每个结构体都储存一个元素。
然后将结构体q的地址赋值给p.next。
p.next = &q;
最后,访问元素
p中的元素:p.element
q中的元素: p.next->element
插入节点
删除节点
#include<iostream>
using namespace std;
struct chainNode {
int element;
chainNode * next;
};
int main() {
struct chainNode p0;
p0.element = 11;
struct chainNode p1;
p1.element = 13;
p1.next = &p0;
struct chainNode p2;
p2.element = 15;
p2.next = &p1;
struct chainNode p3;
p3.element = 17;
p3.next = &p2;
cout << p3.element<<" "; //p3元素
cout << p3.next->element<<" "; //p2元素
cout << p3.next->next->element<<" "; //p1元素
cout << p3.next->next->next->element<<"\n"; //p0元素
//插入p节点
struct chainNode p;
p.element = 100;
p.next = &p0;
p1.next = &p;
cout << p3.element << " "; //p3元素
cout << p3.next->element << " "; //p2元素
cout << p3.next->next->element << " "; //p1元素
cout << p3.next->next->next->element << " "; //插入的p元素
cout << p3.next->next->next->next->element << "\n"; //p0元素
//删除之前插入的p元素
struct chainNode *t;
t = &p;
p1.next = t->next;
//delete t;
cout << p3.element << " "; //p3元素
cout << p3.next->element << " "; //p2元素
cout << p3.next->next->element << " "; //p1元素
cout << p3.next->next->next->element << "\n"; //p0元素
return 0;
}
目前,有个问题:删除结构体指针报错。
解决方案:
#include<iostream>
using namespace std;
struct chainNode {
int element;
chainNode * next;
};
int main() {
struct chainNode p0;
p0.element = 11;
struct chainNode p1;
p1.element = 13;
p1.next = &p0;
struct chainNode p2;
p2.element = 15;
p2.next = &p1;
struct chainNode p3;
p3.element = 17;
p3.next = &p2;
cout << p3.element<<" "; //p3元素
cout << p3.next->element<<" "; //p2元素
cout << p3.next->next->element<<" "; //p1元素
cout << p3.next->next->next->element<<"\n"; //p0元素
//插入p节点
struct chainNode p;
p.element = 100;
p.next = &p0;
p1.next = &p;
cout << p3.element << " "; //p3元素
cout << p3.next->element << " "; //p2元素
cout << p3.next->next->element << " "; //p1元素
cout << p3.next->next->next->element << " "; //插入的p元素
cout << p3.next->next->next->next->element << "\n"; //p0元素
//删除之前插入的p元素
struct chainNode *t;
t = &p;
p1.next = t->next;
//delete t;
cout << p3.element << " "; //p3元素
cout << p3.next->element << " "; //p2元素
cout << p3.next->next->element << " "; //p1元素
cout << p3.next->next->next->element << "\n"; //p0元素
return 0;
}