php网站是什么,电子元器件采购网,wordpress js跳转,wordpress xiu主题5.2数据结构——堆栈 宗旨#xff1a;技术的学习是有限的#xff0c;分享的精神是无限的。 1、特性#xff1a;先进后出#xff08;FILO#xff09; 2、应用#xff1a; 子程序的调用 处理递归调用 表达式转换与求值 二叉树的遍历 图形的深度优化优先 3、用数组仿真堆栈
技术的学习是有限的分享的精神是无限的。 1、特性先进后出FILO 2、应用 子程序的调用 处理递归调用 表达式转换与求值 二叉树的遍历 图形的深度优化优先 3、用数组仿真堆栈
1堆栈数组结构 char stack[MAX_SIZE]; //堆栈的最大容量 int top -1; //-1表示堆栈为空随着堆栈中数据量的变动改变指向顶端的位置 2数据的存取 数据输入堆栈【push】栈顶指针top1若top小于MAX_SIZE则数据存入top所指的数组元素中否则堆栈已满无法存入数据。 void push(int value)
{if(top MAX_SIZE) //堆栈已满{printf(stackis full!\n);}else{top;//堆栈指针1stack[top] value; //将数据压入栈中}
} 数据输出堆栈【pop】若堆栈指针索引大于0堆栈未空则取出目前栈顶指针top所指数组内容top-1指向下一个堆栈元素。 int pop(void)
{int temp;//暂存从堆栈中取出的数据int i;if(top 0) // 堆栈为空退出{printf(stackis empty!\n);return -1;}temp stack[top]; //将数据pop出栈top--;return temp;
} 4、用链表仿真堆栈
1堆栈链表结构 typedef struct node
{int data;struct node *next;
} list, *link;
link stack NULL; //向链表顶端的 2数据的存取 数据输入堆栈【push】建立一个新节点将新节点的指针指向原来堆栈指针所指的节点将原来的节点指向新节点。 void push(int value)
{link new;new (link)malloc(sizeof(list));new- data value;new- next stack;stack new;
}数据输出堆栈【pop】先保留栈头指针stack所指的位置将堆栈指向下一个节点取出原堆栈顶端指针所指的节点内容释放原堆栈顶端指针所指的节点内存。 int pop(void)
{link pop;int temp;if(stack ! NULL){pop stack;stack stack - nexttemp pop - data;free(pop);return temp;}return -1;
}