|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 int_lyc 于 2018-2-18 15:53 编辑
最近看了数据结构和算法入门,自己用C++实现了一个单链表
过程如下:
定义一个点类
两个数据成员,一个存储数据,一个点类指针;
- class Point
- {
- public:
- int num;
- Point *next;
- };
复制代码
定义一个链类
一个数据成员,指向空节点的点类指针;
- class List
- {
- private:
- Point *first = new Point();
- };
复制代码
然后是一些函数
构造函数、析构函数、接口函数;
<为了更好体现程序的工作,我加入了许多解释性的语句>
构造函数:
- List(){std::cout<<"创建了一个单链表\n";}
复制代码
析构函数:
<析构函数删除每一个new出来的点类对象,并提示>
- List()
- {
- Point *p,*q;
- p = first->next;
- while(p != NULL)
- {
- q = p;
- p = p->next;
- std::cout<<"析构了元素"<<q->num<<"\n";
- delete q;
- }
- std::cout<<"析构了一个单链表\n";
- }
复制代码
然后是增加、删除、打印函数:
增加:
<重载了增加函数>
<加在链尾用一个临时点类指针,插入用两个临时点类指针移到要加入的位置,然后new一个点类对象>
- void add(int number);//加在链尾
- void add(int number,int addr);//第二个参数是加入的位置
复制代码
删除:
<两个临时指针,移到删除的位置,判断是否超过链表长度,通过变化删除要删除的对象>
打印:
<用一个临时指针遍历链表,打印出每一个点类对象储存的内容>
最后又增加了排序函数:
排序:
<先写一个函数返回数组长度>
<然后用冒泡排序实现链表的排序>
- for(int i=0;i<len();i++)
- {
- for(int j=0;j<len()-i-1;j++)
- {
- if(temp->next->num > temp->next->next->num)
- {
- q = temp->next;
- p = temp->next->next;
- temp->next = p;
- q->next = p->next;
- p->next = q;
- }
- temp = temp->next;
- }
- temp = first;
- }
复制代码
至此,一个简陋的单链表完成;
附上代码:
[Single_Linked_List](https://github.com/int-lyc/Single_Linked_List)
|
|