链表的将基本结构及用法
/* * node_2.cpp * * Created on: 2013年8月1日 * Author: Administrator */ #include <iostream> using namespace std; typedef int T;//给int起别名为T struct Node { T data; Node* next; operator T() { return data; } Node(T d) :data(d), next(NULL) { } }; void showList(Node* head) { Node* p = head; while (p != NULL) { cout << *p << ' '; /** * (*p).next == p->next * p:指向当前结构体的指针 * (*p):当前结构体 * p->next:结构体特有的访问成员变量的方法.其值为某个结构体的地址或者是NULL * p=p->next :将p指向当前结构体的下一个结构体 * */ p = p->next; } cout << endl; } int main() { Node a(10), b(20), c(30), d(40),e(50),f(60); cout<<a<<' '<<b<<endl;//这时会自动调用该结构体的重载的类型转换函数 a.next = &b; b.next = &c; c.next = &d; showList(&a); e.next = b.next; b.next = &e; showList(&a); Node*& r = a.next; f.next = r; r = &f; showList(&a); Node* k = new Node(70); /** * 访问结构体成员的3种方式: * c.next :c是结构体变量 * k->next :k是结构体指针(指向结构体的指针) * (*k).next :k是结构体指针(指向结构体的指针) */ k->next = c.next; c.next = k; showList(&a); }
以下再贴一个简洁版的:
/* * node_3.cpp * * Created on: 2013年8月1日 * Author: Administrator */ #include <iostream> using namespace std; typedef int T; struct Node{ T data; Node* next; operator T(){ return data; } Node(T data):data(data),next(NULL){ } }; void showList(Node* head){ Node* p = head; while(p!= NULL){ cout<<(*p)<<' '; p=p->next; } cout<<endl; } int main(){ Node a(10),b(20),c(30),d(40),e(50),f(60); a.next = &b; b.next = &c; c.next = &d; showList(&a); e.next = a.next; a.next = &e; showList(&a); Node* & p = b.next; f.next = p; p = &f; showList(&a); Node* k = new Node(70); k->next = c.next; c.next = k; showList(&a); }