栈和递归


递归问题——用分治法求解分治法:对于一个较为复杂的问题,能够分解成几个相对简单的且解法相同或类似的子问题来求解必备的三个条件能将一个问题转变成一个新问题,而新问题与原问题的解法相同或类同,不同的仅是处理的对象,且这些处理对象是变化有规律的可以通过上述转化而使问题简化必须有一个明确的递归出口,或称递归

线性表的应用


线性表的应用线性表的合并问题描述​假设利用两个线性表La和Lb分别表示两个集合A和B,现要求一个新的集合A = A U B​ $$La=(7,5,3,11)$$ $$Lb=(2,6,3)$$ --------- > $$La=(7,5,3,11,2,6)$$算法步骤​依次取

线性表


顺序表基本操作的实现1.1 线性表L的初始化Status InitList_ Sq(SqList &L){ //构造一个空的顺序表LL.elem=new ElemType[MAXSIZE]; //为顺序表分配空间if(!L.elem)exit(OVERFLOW);

链栈


链栈的表示typedef struct StackNodef{ SElemType data; struct StackNode *next;}StackNode,*LinkStack;LinkStack S;注意:链表的头指针就是栈顶不需要头结点基本不存在栈满的情况空栈相当于头指针指向

顺序栈的重要算法


栈的抽象数据类型的定义ADT Stack{ 数据对象: D={ai|ai∈ElemSet,i=1,2,.....,n,n≥0} 数据关系: R1 ={<ai-1,ai> |ai-1,ai∈D,i=2,...n 约定an端为栈顶