链表容易出现的问题(使用链表遇到的问题)
链表存储的优缺点
链表优点和缺点如下:
优点:在插入和删除操作时,只需要修改被删节点上一节点的链接地址,不需要移动元素,从而改进了在顺序存储结构中的插入和删除操作需要移动大量元素的缺点。
缺点:
1、没有解决连续存储分配带来的表长难以确定的问题。
2、失去了顺序存储结构随机存取的特性。
扩展资料:
线性表的链式存储表示的特点是用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。
根据情况,也可以自己设计链表的其它扩展。但是一般不会在边上附加数据,因为链表的点和边基本上是一一对应的(除了第一个或者最后一个节点,但是也不会产生特殊情况)。
对于非线性的链表,可以参见相关的其他数据结构,例如树、图。另外有一种基于多个线性链表的数据结构:跳表,插入、删除和查找等基本操作的速度可以达到O(nlogn),和平衡二叉树一样。
其中存储数据元素信息的域称作数据域(设域名为data),存储直接后继存储位置的域称为指针域(设域名为next)。指针域中存储的信息又称做指针或链。
参考资料来源:百度百科-链表
链表应用中的一些问题
1;为什么在几个循环的时候,如果将循环变量设为相同的变量名会出现错误。如将i改为k就会出现错误,不是说在循环类定义的变量在循环执行完之后内存就被释放么?
最好定义在外面,将其定义在里面是不好的习惯.定义在外面只要每次使用前初始化下就好了.
2:对employee * ptrtemp;这句,它在循环内声明,每次循环的时候都会重新执行它?
是的
3:如果我想在结构体中定义一个指向结构体本身的指针employee *next;用来指向下一个结构体数据。能否用这样的方法实现:用employee *next;来实现从大到小的指向并输出?
可以用后驱指针实现;
typedef struct node
{
char name[7];
double salary;
struct node *next;
}*LINK,NODE;
关于链表的几个问题。
1、typedef是定义数据类型,Linklist是这个类型的别名,以后就可以直接用Linklist这个名字来定义变量。如果没有typedef,Linklist就是变量名。
2、creat函数返回的值是Linklist类型,即你上面定义的链表结构。
研究单链表的时候碰到的问题
首先,对于一个单链表来说,我们需要一个链首指针来控制它,有了链首指针,就可以一直next,遍历链表就很简单了。
所以不管是初始化链表,还是遍历链表,参数里面都需要一个链表指针,即LNode* 类型;
而对于
初始化单链表的函数:void InitList(LNode* HL) 来说
当初始化成功,我们需要返回该链表的链首指针,因此需要加上引用类型,不然要用的时候去哪里找它。
希望我的回答,可以帮到你。