数据结构与算法(C语言版)__链表
2016-12-23 13:29
375 查看
数组的缺点:当插入数据时,后面的所有数据都要向后移位,删除数据时,后面的数据都要向前移位
所以出现链表,链表的插入和删除都比较快,链表不需要移位。
下面使用友元类和嵌套类实现链表
在VS2013中新建项目,在头文件中添加ThreeLetterList.h在源文件中添加main.cpp
总结:链表是第二常用的数据结构,链表有单链表。但是这里没有写链表的删除,今后会重新实现完整的链表。
所以出现链表,链表的插入和删除都比较快,链表不需要移位。
下面使用友元类和嵌套类实现链表
在VS2013中新建项目,在头文件中添加ThreeLetterList.h在源文件中添加main.cpp
//ThreeLetterList.h #ifndef THREELETTERLIST_H #define THREELETTERLIST_H #include<iostream> class ThreeLetterList{ private: //嵌套类 class ThreeLetterNode{ public: char data[3]; ThreeLetterNode * link; }; ThreeLetterNode * first; public: void test(); void show(); }; void ThreeLetterList::test(){ ThreeLetterNode *f = new ThreeLetterNode(); f->data[0] = 'B'; f->data[1] = 'A'; f->data[2] = 'T'; f->link = 0; first = f; f = new ThreeLetterNode(); f->data[0] = 'C'; f->data[2] = 'T'; f->data[1] = 'A'; f->link = 0; first->link = f; } void ThreeLetterList::show(){ std::cout << first->data[0] << first->data[1] << first->data[2] << " -> " << first->link->data[0] << first->link->data[1] << first->link->data[2] << std::endl; } #endif
//main.cpp #include<iostream> #include"ThreeLetterList.h" using namespace std; class List; class Node{ friend class List;//使用友元类 private: int data;//节点里的数据 Node* link;//指向下一个节点的指针 }; class List{ public: void test(); void show(); private: Node * first; }; void List::show(){ cout << first->data << " -> " << first->link->data << " -> " << first->link->link->data << endl; } void List::test(){ Node *f = new Node(); f->data = 44; f->link = 0; first = f; f = new Node(); f->data = 72; f->link = 0; first->link = f; f = new Node(); f->data = 210; f->link = 0; first->link->link = f; } int main(){ List a; a.test();//创建三个节点 a.show(); ThreeLetterList l; l.test(); l.show(); cout << "OK" << endl; system("pause"); return 0; }
总结:链表是第二常用的数据结构,链表有单链表。但是这里没有写链表的删除,今后会重新实现完整的链表。
相关文章推荐
- 数据结构与算法(C语言版)__循环链表
- 数据结构与算法(C语言版)__链表2
- Java数据结构与算法之顺序表和链表实现栈和队列
- 单向链表排序——冒泡排序(C语言版)
- 数据结构与算法(二)-线性表之单链表顺序存储和链式存储
- 为什么我要放弃javaScript数据结构与算法(第五章)—— 链表
- 一个完整的双向链表程序(C语言版)
- 数据结构与算法专题之线性表——链表(一)单链表
- 新手学习数据结构与算法---单链表(C++版, 跟C还是有点差别的)
- 数据结构 - C语言版 - 单链表 所有基本操作
- 头插法建立链表(C语言版)
- 数据结构与算法(C语言版)__递归的折半查找
- 数据结构与算法(C语言版)__栈
- 考研数据结构与算法(3)----有头节点和尾节点的链表
- 考研数据结构与算法(4)----有头节点和尾节点的链表
- 数据结构与算法概述及链表的相关知识回顾
- 数据结构 - C语言版 - 双向链表 所有基本操作
- 数据结构与算法[LeetCode]—删除链表中重复的数
- (C语言版)链表(一)——实现单向链表创建、插入、删除等简单操作(包含个人理解说明及注释,新手跟着写代码)
- (C语言版)链表(四)——实现双向循环链表创建、插入、删除、释放内存等简单操作