常用的数据结构有哪些
表、树、图、栈、队列、数组等。
链表
链表是一种常见的重要的数据结构。
它是动态地进行存储分配的一种结构。
数据元素存储在彼此独立的内存空间中,每个数据元素中增加一个数据项
用于存储其它元素的地址(指针域),用来表示数据元素之间的关系。
链表的优点:
1.插入删除方便且速度快;
2.内存利用率高,不会浪费内存;
3.大小没有固定,拓展很灵活。
链表的缺点:不能随机查找,必须从第一个开始遍历,查找效率低。
判断环形链表
快慢指针法:
首先创建两个指针1和2,同时指向这个链表的头节点。
然后开始一个大循环,在循环体中,让指针1每次向下移动一个节点,指针2每次向下移动两个节点。
比较两个指针指向的节点是否相同:如果相同判断链表有环,如果不同则继续循环。
bool is_ring(List* list)
{
Node* a = list->head;//慢指针
Node* b = list->head;//快指针
while(b!=NULL && b->next!=NULL)
{
a = a->NULL;//慢指针移一步
b = b->next->next;//快指针移两步
if(a == b)
return true;//有环
}
return false;//无环
}
怎么把文件里的数据用树保存
首先建立一个txt文本;使用1或0代表每个数据的左孩子、右孩子是否存在;
定义两个函数,一个先将文件转化为数组,另一个再将数组转化为二叉树。