数据结构栈
Jun 07, 2016 pm 04:10 PM说明:严蔚敏的《数据结构》(C语言版)学习笔记,记录一下,以备后面查看。 如上图所示,刚开始base指针和tZ喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcNa41eu2vNa4z/LVu7XNo6y1sdG51bu1xMqxuvKjrHRvcNa41evP8snP0sa2r6Os1rG1
说明:严蔚敏的《数据结构》(C语言版)学习笔记,记录一下,以备后面查看。
如上图所示,刚开始base指针和tZ喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcNa41eu2vNa4z/LVu7XNo6y1sdG51bu1xMqxuvKjrHRvcNa41evP8snP0sa2r6Os1rG1vdW7wvq686Os1bu2pda41et0b3DWuM/y1bvN4rXY1rejrLTLyrHO0sPH0OjSqtTZt9bF5NDCv9W85KGjPC9wPjxwPjwvcD48cHJlIGNsYXNzPQ=="brush:sql;">#include 上面的conversion函数是一个将10进制转换为8进制的例子,这个就是栈的一个应用,还有例如,括号匹配的验证、迷宫求解等。 例如Hanoi塔问题: 假设有3个分别为a,b,c的三个塔座,a上有直径从大到小的圆盘,可以借助b塔座将a上的圆盘移动到c上,移动过程中大小顺序不变。void movePic(char a, int n, char b){
printf("将编号为%d的圆盘从%c上移动到%c上\n", n , a, b);
}
void hanuota(int n, char x, char y, char z){
if(n == 1){
movePic(x, 1, z); //将编号为1的圆盘从x移到z
}else{
hanuota(n - 1, x, z, y); //将x上编号为1到n-1的圆盘移到y,z作辅助塔
movePic(x, n, z); //将编号为n的圆盘从x移到z
hanuota(n - 1, y, x, z); //将y上编号为1到n-1的圆盘移到z,x作辅助塔
}
}
int main(){
hanuota(3, 'a', 'b', 'c');
}
1、要将n个圆盘移动到c,则需要先将n-1个圆盘移动到b
2、再将a上的最底下的圆盘移动到c
3、最后将b上面的n-1个圆盘移动到c
经过这三个步骤就可以完成移动,在这三个步骤中,步骤1,从a将n-1个圆盘移动到b和问题本身是同一个问题,步骤3将n-1个圆盘从b移动到c也和问题本身是同一个问题,所以这两处我们就可以迭代调用。

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Xiaohongshu에 게시한 메모가 누락된 경우 어떻게 해야 합니까? 방금 보낸 메모를 찾을 수 없는 이유는 무엇인가요?

Xiaohongshu에 노트 튜토리얼을 게시하는 방법은 무엇입니까? 메모를 게시하여 사람들을 차단할 수 있나요?

에이전트의 경계 탐색: 대규모 언어 모델 에이전트의 성능을 종합적으로 측정하고 개선하기 위한 모듈형 벤치마크 프레임워크인 AgentQuest

vivox60pro의 언어 표시를 변경하는 방법 vivox60pro 시스템 언어 설정 방법

대형 모델에서 B-엔드 프런트엔드 코드 생성 지원에 대한 생각과 실습
