今天我学了动态链表。
动态链表的每一个元素仍然分为值域和链域,和静态链表一样。
然而,动态链表和静态链表的区别是:
动态链表 | 静态链表 |
节省内存空间 | 可能会浪费内存空间 |
不需要与数组一起使用 | 一般与数组一起使用 |
一般用来开发应用软件 | 一般用来竞赛写程序 |
说白了,动态链表的定义是:
动态链表是可以一直增加新元素的链表。
那到底怎么在程序中运用动态链表呢?
#include<bits/stdc++.h>
using namespace std;
struct node{//仍然使用结构体定义链表
char name;
int age;
node* next;
//重点!!!此时的next存储的依然是下一个元素的地址,只是next需要用node类型定义
//这是因为next需要存储name的下一个元素的地址以及age的下一个元素的地址
};//不需要使用数组
int main(){
node *head=NULL;//头指针定义
node *tail=NULL;//尾指针定义
for(int i=1;i<=n;i++){//输入:创建链
node *t = new node;//这一行代码的意思是定义一个node类型的变量t,可以写成node t
cin>>t->name>>t->age;//输入name和age
t->next=NULL;
if(head=NULL){//如果没有链首(即链表中没有元素)
head=t;//定义链表的值为t
}else{//链表中有元素
tail->next=t;//链尾指向新元素
tail=t;//更新链尾,使得其等于新元素
}
}
return 0;
}
最后,我有一个问题:比如说node a,a.name和a->name有啥区别呢?
感谢阅读。