数据结构:单链表
2015-09-30 22:43
393 查看
//单链表// #include <iostream> #include <stdlib.h> using namespace std; template<typename Type> struct Node { Type data; Node *next; Node(Type d = Type()) :data(d), next(NULL){} }; template<typename Type> class List { public: List() { first = NULL; //不带头节点的的单向链表。 } void Insert(int val)//后插 { Node<Type> *s = new Node<Type>(val); Node<Type> *p = first; if (NULL == first) { first = s; p = first; } else { while (p->next != NULL)p = p->next; s->next = p->next; p->next = s; p = s; } } void Deleate(int val)//删除节点。 { Node<Type> *p = first; Node<Type> *pr = NULL; int flags = 0; while (p != NULL) { while (p!=NULL && p->data == val) { if (p == first)flags = 1; Node<Type> *m = p->next; delete p; p = NULL; p = m; } if (flags == 1) { first = p; flags = 0; } if (pr!=NULL) { pr->next = p; } pr = p; if (p!=NULL) p = p->next; } } void Inser_val(int val)//按值插入。 { Node<Type> *s = new Node<Type>(val); Node<Type> *p = first; Node<Type> *pr = NULL; while (p != NULL && p->data < val) { pr = p; p = p->next; } if (pr != NULL) { s->next = p; pr->next = s; } else { s->next = first; first = s; } } void Sort() { if (first == NULL || first->next == NULL)return; Node<Type> *p = first->next; Node<Type> *m = NULL; first->next = NULL; while (p != NULL) { m = p->next; p->next = NULL; this->Inser_val(p->data); delete p; p = NULL; p = m; } } void L_F()//逆序 { Node<Type> *p = first; if (p == NULL || p->next == NULL)return; Node<Type> *q = NULL; while (p != NULL) { Node<Type> *m = p->next; p->next = q; q = p; p = m; } first = q; } void Printf() { Node<Type> *p = first; while (p != NULL) { cout << p->data << " "; p = p->next; } cout << endl; } private: Node<Type> *first; }; int main() { List<int> list; int a[] = {9,8,7,4,432,5,4,432,4,4,4,5,10,2,3}; for (int i = 0; i < sizeof(a) / sizeof(int); ++i) list.Insert(a[i]); list.Printf(); list.L_F(); list.Printf(); return 0; }
相关文章推荐
- C语言数据结构相关编程->链表001题
- Valid Parentheses
- 数据结构——堆(转载)
- Java数据结构与算法之数组应用——用户登陆与注册数组实现
- 数据结构 PAT 02-线性结构3 Pop Sequence
- 数据结构 PAT 02-线性结构2 Reversing Linked List 单链表实现
- 数据结构 PAT 02-线性结构1 一元多项式的乘法与加法运算
- 数据结构学习规划~
- 数据结构初语~
- 数据结构 PAT 01-复杂度2 Maximum Subsequence Sum
- 数据结构 PAT 01-复杂度1 最大子列和问题
- java系统学习(十四) --------数据结构
- java系统学习(十四) --------数据结构
- 数据结构之再学习
- 数据结构和算法学习笔记
- 数据结构广义表实验
- 帧缓冲相关数据结构整理(设备驱动开发详解)
- 《大话数据结构》的笔记(作者: 程杰)
- 【Java数据结构】二分查找
- 数据结构和算法学习(5)-链表