数据结构与算法--线性表

概念:一种数据结构,每个结点最多只有一个前驱结点和一个后继结点

类别
- 顺序表(定长)
- 链表(变长)
- 栈(栈顶删除[弹栈],栈顶插入[压栈],后进先出[LIFO])
- 队列(队头删除[出队],队尾插入[入队],先进先出[FIFO])

线性表的抽象数据类型定义(C++):

1. template<class T>    
2. class List{    
3.      void Clear();              //置空线性表    
4.      bool IsEmpty();                //线性表为空时,返回true    
5.      bool Append(const T value);    
6.             //在表尾添加元素value,表的长度增加1    
7.      bool Insert(const int p, const T value);    
8.           //在位置p插入元素valve,表的长度增加1    
9.      bool Delete(const int p);    
10.           //删除位置p上的元素,表的长度减1    
11.      bool getdValue(const int p, T & value);    
12.             //把位置p上的元素值返回到变量valve中    
13.      bool setValue(const int p, const T value);    
14.             //把位置p上的元素值修改为valve    
15.      bool getPos(int &p, const T value);    
16.           //把值为valve的元素位置返回到变量p中    
17.   
18. };

栈的抽象数据类型定义(C++):

1. template<class T>      
2. class Stack{      
3.     public:      
4.         void Clear();               //清空栈      
5.         bool Push(const T item);    //栈的压栈操作      
6.         bool Pop(T & item);         //读取栈顶元素的值并删除      
7.         bool Top(T & item);         //读取栈顶元素的值但不删除      
8.         bool IsEmpty();             //判断栈是否为空      
9.         bool IsFull();              //判断栈是否为满      
10. };
注:顺序栈和链式栈中,top指示栈顶

队列的抽象数据类型定义(C++):

1. template<class T>  
2. class Queue{  
3.     public:  
4.         void Clear();                   //清空队列  
5.         bool EnQueue(const T item);     //队列的入队操作  
6.         bool DeQueue(T & item);         //读取队头元素并删除  
7.         bool getFront();                //读取队头元素但不删除  
8.         bool IsEmpty();                 //判断队列是否为空  
9.         bool IsFull();                  //判断队列是否为满  
10. };
注:顺序队列中,front指示队头,rear指示队尾的下一个元素

递归:递归基础(结束条件)+递归规则(简单求解复杂),尾部递归是循环的变形,非尾部递归可用栈实现

字符串模式匹配:朴素的模式匹配、KMP模式匹配(预处理模式,分析字符分布,计算特征向量[子串的最大相同前缀子串和后缀子串长度])

猜你喜欢

转载自blog.csdn.net/return_000/article/details/80259509