5.5.2 创建链表
下面通过示例代码5.8来了解链表,同质链表的创建和使用与异质链表的创建和使用与此相同。
代码5.8 同质链表的创建CreateAList
<———————————文件名:example508.cpp————————————————> 01 #include<iostream> 02 struct student//定义结构student 03 { 04 char name[20]; 05 int age; 06 student*next;//指向下一个元素的指针 07 }; 08 int main() 09 { 10 using namespace std; 11 student c={"Kaka",23,NULL};//声明末尾结构变量,指向为NULL 12 student b={"Deco",27,&c};//声明c之前结构变量b,&c为b.next初始化 13 student a={"Terry",30,&b};//申明b之前结构变量a,&b为a.next初始化 14 student*head=&a;//头指针,指向a 15 student*pointer=head;//使用指针pointer访问链表中的元素 16 cout<<"Head->"; 17 while(pointer)//while(pointer!=NULL) 18 { 19 cout<<(pointer). name<<"->"<<(pointer).age<<"->"; 20 pointer=(*pointer). next;//指向下一个元素 21 } 22 cout<<"End"<<endl; 23 return 0; 24 }
输出结果如下所示。
Head->Terry->30->Deco->27->Kaka->23->End
【代码解析】代码第20行,就是将结构指针指向链表元素中的下一个元素,只有当链表指针为NULL时,整个循环结束。
链表的创建有以下两个步骤。
❑在节点数据中增加一个指针next,以指向逻辑上的下一个节点。
❑设置一个指向首结点的指针(代码5.8中的head指针),将最终节点的指针置为NULL(代码5.8中的c.next)。
注意
链表中的先后是逻辑上的关系,不代表节点在内存中的位置先后。