所有结点(结构体变量)都是在程序中定义的,不是临时开辟的,也不能用完后释放,这种链表称为静态链表。对各结点既可以通过上一个结点的next指针去访问,也可以直接通过结构体变量名s1, s2, s3去访问。
动态链表则是指各结点是可以随时插入和删除的,这些结点并没有变量名,只能先找到上一个结点,才能根据它提供的下一结点的地址找到下一个结点。只有提供第一个结点的地址,即头指针head,才能访问整个链表。如同一条铁链一样,一环扣一环,中间是不能断开的。
#include <QCoreApplication> #include <iostream> using namespace std; struct Student{ long num; float score; struct Student *next; }; int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); Student s1,s2,s3; s1.num=1001; s1.score=80; s2.num=1002; s2.score=90; s3.num=1003; s3.score=99; Student *head; Student *p; head=&s1; s1.next=&s2; s2.next=&s3; s3.next=NULL; p=head; while(p!=NULL) { cout<<p->num<<"score:"<<p->score<<endl; p=p->next;//使p指向下一个结点 } return a.exec(); }