链表(主要是单链表)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链表(主要是单链表)相关的知识,希望对你有一定的参考价值。
单链表:只指出后继关系的链表
双链表:同时存储前趋和后继
循环链表:指出后继的同时指出头结点和尾结点的关系
单链表的存储
定义一个结点类型
struct linkRec
{
datatype data;
linkRec *next;
}
单链表操作-插入
在结点p后插入一个结点
*申请空间
*输入数据放入申请到的空间
*链入p后
tmp = new linkRec; // 创建一个新结点
tmp->data = x; // 把x放入新结点的数据成员中
tmp->next = p->next; // 把新结点和p的下一成员相连
p->next = tmp; //把p和新结点连接起来
单链表操作-删除
把结点p后的结点删除
delPtr=p->next;
p->next=delPtr->next;
delete delPtr;
单链表操作-建立
*定义头指针:linkRec *head;
*建立头结点
-申请空间
-设为头结点
*逐个从键盘输入数据,存入链表
-接受输入
-申请空间
-输入数据放入申请到的空间
-链入链表尾
*置链表结束标志
1 head = new linkRec; 2 rear = head; 3 cin >> in_data; 4 while (输入未结束) 5 { p = new linkRec; 6 p->data = in_data; 7 rear->next = p; 8 rear = p; 9 cin >> in_data; 10 } 11 rear->next = NULL; //这一行是很重要的
单链表操作-输出
1 p = head->next; 2 while ( p != NULL) 3 { cout << p->data; 4 p = p->next; 5 }
链表总结
*实现较复杂
*插入、删除效率高,但查找第i个元素效率低
*无表满的问题
*适合于动态表
以上是关于链表(主要是单链表)的主要内容,如果未能解决你的问题,请参考以下文章