首页 > 代码库 > 链表(主要是单链表)
链表(主要是单链表)
单链表:只指出后继关系的链表
双链表:同时存储前趋和后继
循环链表:指出后继的同时指出头结点和尾结点的关系
单链表的存储
定义一个结点类型
struct linkRec
{
datatype data;
linkRec *next;
}
单链表操作-插入
在结点p后插入一个结点
*申请空间
*输入数据放入申请到的空间
*链入p后
tmp = new linkRec; // 创建一个新结点
tmp->data = http://www.mamicode.com/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 =http://www.mamicode.com/ 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个元素效率低
*无表满的问题
*适合于动态表
链表(主要是单链表)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。