CUGB培训基础数据结构.ppt
上传人:sy****28 上传时间:2024-09-14 格式:PPT 页数:36 大小:3.8MB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

CUGB培训基础数据结构.ppt

CUGB培训基础数据结构.ppt

预览

免费试读已结束,剩余 26 页请下载文档后查看

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基础数据结构:1.队列2.栈3.二叉树4.堆5.STL队列:只能在队首插入元素,队尾删除元素,先进先出(FIFO)a1a2a3a4a5a6a7a8a9删除端(头)插入端(尾)图3.1数组模拟队列intqueue[MaxSize];Intfront=-1;Intrear=-1;插入元素Dreamfox2rear=rear+1rear=rear+1rear=11rear=00queue插入City插入Cradle2rear=rear+1rear=210从队列中取出元素是要进行一下四步骤:<1>检查队列是否为空<2>若头指针front等于尾指针rear,则表示队列中无数据<3>若头指针front不等于尾指针rear,则将头指针往前移front+1<4>取出队头指针所指的数组元素内容队列常结合BFS解题题目:POJ1915224311011154225123123126327836263669(难)栈:先进后出(FILO)Stack[1001];Top=-1;基本算法:1.进栈(push)算法top=top+1(栈指针+1,指向进栈地址)2.出栈(pop)算法首先判断栈是否为空(top<0)top—(栈指针-1,指向栈顶)21top=top-1top=10stack2top=top-1top=-110习题:poj13633250coj1151二叉树有左右子树之分,每个父节点的子节点个数<=2建树:structBinaryTree{chardata;//可以添加任意类型.数目的变量BinaryTree*Lchild,*Rchild;};BinaryTree*root;BinaryTree*CreateBinaryTree(){BinaryTree*NewNode;scanf(“%c”,&ch);if(ch=='#')returnNULL;else{NewNode=(BinaryTree*)malloc(sizeof(BinaryTree));NewNode->data=ch;NewNode->Lchild=CreateBinaryTree();//createleftchildNewNode->Rchild=CreateBinaryTree();//createrightchildreturnNewNode;}}BinaryTree*root=NULL;root=(BinaryTree*)malloc(sizeof(BinaryTree));root=CreateBinaryTree();前序遍历:voidPreOrder(BinaryTree*root){if(root!=NULL){printf("%c",root->data);PreOrder(root->Lchild);PreOrder(root->Rchild);}}中序遍历:voidInOrder(BinaryTree*root){if(root!=NULL){InOrder(root->Lchild);printf("%c",root->data);InOrder(root->Rchild);}}课后要先理解二叉树的建立和遍历过程,另外可以自学二叉搜索树和二叉平衡树习题:poj2255(前序、中序求出后序序列)Poj2418(二叉排序树)Coj106210701.最大最小顶堆2.堆的调整堆首先是个二叉堆,最大最小顶堆就是每个子堆的堆顶元素都比子堆中任何元素要大(小),堆顶元素最大(小)最初的堆肯定不符合最大最小堆的条件,要通过程序来实现将其调整为堆堆的调整是堆排实现过程中关键的一步,具体也可以参照《数据结构》(严魏敏)中堆排程序堆调整的参考程序voidadjust(introot,intn){intj=root<<1,temp=a[root],ck=0;while(j<=n&&ck==0){if(j<n&&a[j]<a[j+1])j++;if(temp>=a[j])ck=1;else{a[j>>1]=a[j];j<<=1;}}a[j>>1]=temp;}习题:学习堆的好题poj2833(包括堆的插入、调整、最大和最小顶堆的实时维护)coj1115(实时维护堆)1.排序#include<algorithm>2.字符串#include<string>3集合#include<set>4.映射#include<map>