数据结构代码_计算机-数据结构与算法.pdf

上传人:c****3 文档编号:94887912 上传时间:2023-08-10 格式:PDF 页数:26 大小:805.11KB
返回 下载 相关 举报
数据结构代码_计算机-数据结构与算法.pdf_第1页
第1页 / 共26页
数据结构代码_计算机-数据结构与算法.pdf_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《数据结构代码_计算机-数据结构与算法.pdf》由会员分享,可在线阅读,更多相关《数据结构代码_计算机-数据结构与算法.pdf(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-总结资料 数据结构代码 P20,例 2-1 void union(List&La,List Lb)La_len=ListLength(La);Lb_len=ListLength(Lb);for(i=1;i=Lb_len;i+)GetElem(Lb,i,e);if(!LocateElem(La,e,equal)ListInsert(La,+La_len,e);P21,例 2-2,将 void MergeList(List La,List Lb,List&Lc)InitList(Lc);i=j=1;k=0;La_len=ListLength(La);Lb_len=ListLength(Lb);w

2、hile(i=La_Len)&(j=Lb_len)GetElem(La,i,ai);GetElem(Lb,j,bj);if(ai=bj)ListInsert(Lc,+k,ai);+i;else ListInsert(Lc,+k,bj);+j while(i=La_len)-总结资料 GetElem(La,i+,ai);ListInsert(Lc,+k,ai);while(j=Lb_len)GetElem(Lb,i+,bj);ListInsert(Lc,+k,bj);P22,线性表的顺序存储结构#define LIST_INIT_SIZE 100#define LISTINCREMENT 10

3、typedef struct ElemType *elem;/*线性表占用的数组空间*/int length;int listsize;SqList;P23,线性表顺序存储结构上的基本运算 初始化操作 Status IniList_Sq(SqList&L)L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType);if(!L.elem)exit(OVERFLOW);L.length=0;L.listsize=LIST_INIT_SIZE;始化操作总结资料在顺序表里插入一个元素在顺序表里删除一个元素总结资料在顺序表里查找一个元素顺序表的合并总

4、结资料线性表的单链表存储结构为结构指针类型查找元素总结资料在单链表中插入一个元素在单链表中删除一个储结构总结资料栈的顺序存储栈可使用的最大容量栈的初始化取栈顶元素总结资料入栈出栈转换为进制总结资料移动圆盘将塔座上按直径由小到大且至上而下编号为至的个圆盘按规则搬到塔座上可用作辅助塔座将编号为的圆盘从移列的定义初始化总结资料销毁队列入队操作出队操作总结资料循环对列定义队列的最大长度队列的元素空间头指针指示器尾指针指示器初始化操作总结资料入队操作出队操作求队列长度总结资料数组的顺序存储表示数组元素基址数-总结资料 return OK;P24,在顺序表里插入一个元素 Status ListInsert

5、_sq(SqList&L,int i,ElemType e)if(i=L.length+1)return ERROR;if(L.length=L.listsize)newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType);if(!newbase)exit(OVERFLOW);L.elem=newbase;L.listsize+=LISTINCREMENT;q=&(L.elemi-1);for(p=&(L.elemL.length-1);p=q;-p)*(p+1)=*p;*q=e;+L.length

6、;return OK;P24,在顺序表里删除一个元素 Status ListDelete_Sq(SqList&L,int i,ElemType&e)始化操作总结资料在顺序表里插入一个元素在顺序表里删除一个元素总结资料在顺序表里查找一个元素顺序表的合并总结资料线性表的单链表存储结构为结构指针类型查找元素总结资料在单链表中插入一个元素在单链表中删除一个储结构总结资料栈的顺序存储栈可使用的最大容量栈的初始化取栈顶元素总结资料入栈出栈转换为进制总结资料移动圆盘将塔座上按直径由小到大且至上而下编号为至的个圆盘按规则搬到塔座上可用作辅助塔座将编号为的圆盘从移列的定义初始化总结资料销毁队列入队操作出队操作总

7、结资料循环对列定义队列的最大长度队列的元素空间头指针指示器尾指针指示器初始化操作总结资料入队操作出队操作求队列长度总结资料数组的顺序存储表示数组元素基址数-总结资料 if(iL.length)return ERROR;p=&(L.elemi-1);e=*p;q=L.elem+L.length-1;for(+p;p=q;+p)*(p-1)=*p;-L.length;return OK;P25,在顺序表里查找一个元素 int LocatElem_Sq(SqList L,ElemType e,Status(*compare)(ElemType,ElemType)i=1;p=L.elem;while(

8、i=L.length&!(*compare)(*p+,e)+i;if(i=L.length)return i;else return 0;P26,顺序表的合并 void MergeList_Sq(SqList La,SqList Lb,SqList&Lc)pa=La.elem;pb=Lb.elem;Lc.listsize=Lc.length=La.length+Lb.length;始化操作总结资料在顺序表里插入一个元素在顺序表里删除一个元素总结资料在顺序表里查找一个元素顺序表的合并总结资料线性表的单链表存储结构为结构指针类型查找元素总结资料在单链表中插入一个元素在单链表中删除一个储结构总结资料

9、栈的顺序存储栈可使用的最大容量栈的初始化取栈顶元素总结资料入栈出栈转换为进制总结资料移动圆盘将塔座上按直径由小到大且至上而下编号为至的个圆盘按规则搬到塔座上可用作辅助塔座将编号为的圆盘从移列的定义初始化总结资料销毁队列入队操作出队操作总结资料循环对列定义队列的最大长度队列的元素空间头指针指示器尾指针指示器初始化操作总结资料入队操作出队操作求队列长度总结资料数组的顺序存储表示数组元素基址数-总结资料 pc=Lc.elem=(ElemType*)malloc(Lc.listsize*sizeof(ElemTpe);if(!Lc.elem)exit(OVERFLOW);pa_last=La.elem

10、+La.length-1;pb_last=Lb.elem+Lb.length-1;while(pa=pa_last&pb=pb_last)if(*pa=*pb)*pc+=*pa+;else*pc+=*pb+;while(pa=pa_last)*pc+=*pa+;while(pbnext;j=1;while(p&jnext;始化操作总结资料在顺序表里插入一个元素在顺序表里删除一个元素总结资料在顺序表里查找一个元素顺序表的合并总结资料线性表的单链表存储结构为结构指针类型查找元素总结资料在单链表中插入一个元素在单链表中删除一个储结构总结资料栈的顺序存储栈可使用的最大容量栈的初始化取栈顶元素总结资料入

11、栈出栈转换为进制总结资料移动圆盘将塔座上按直径由小到大且至上而下编号为至的个圆盘按规则搬到塔座上可用作辅助塔座将编号为的圆盘从移列的定义初始化总结资料销毁队列入队操作出队操作总结资料循环对列定义队列的最大长度队列的元素空间头指针指示器尾指针指示器初始化操作总结资料入队操作出队操作求队列长度总结资料数组的顺序存储表示数组元素基址数-总结资料 +j;if(!p|ji)return ERROR;e=p-data;return ok;P29,在单链表中插入一个元素 Status ListInsert_L(LinkList&L,int i,ElmeType e)p=L;j=0;while(p&jnext

12、;+j;if(!p|ji-1)return ERROR;s=(LinkList)malloc(sizeof(LNode);s-data=e;s-next=p-next;p-next=s;return OK;P30,在单链表中删除一个元素 Status ListDelete_L(LinkList&L,int i,Elemtype&e)始化操作总结资料在顺序表里插入一个元素在顺序表里删除一个元素总结资料在顺序表里查找一个元素顺序表的合并总结资料线性表的单链表存储结构为结构指针类型查找元素总结资料在单链表中插入一个元素在单链表中删除一个储结构总结资料栈的顺序存储栈可使用的最大容量栈的初始化取栈顶元素

13、总结资料入栈出栈转换为进制总结资料移动圆盘将塔座上按直径由小到大且至上而下编号为至的个圆盘按规则搬到塔座上可用作辅助塔座将编号为的圆盘从移列的定义初始化总结资料销毁队列入队操作出队操作总结资料循环对列定义队列的最大长度队列的元素空间头指针指示器尾指针指示器初始化操作总结资料入队操作出队操作求队列长度总结资料数组的顺序存储表示数组元素基址数-总结资料 p=L;j=0;while(p-next&jnext;+j;if(!(p-next)|ji-1)return ERROR ;q=p-next;p-next=q-next;e=q-data;free(q);return OK;P30,建立单链表 vo

14、id CreateList_L(LinkList&L,int n)L=(Linklist)malloc(sizeof(Lnode);L-next=NULL;for(i=n;i0;-i)p=(LinkList)malloc(sizeof(Lnode);scanf(&p-data);p-next=L-next;L-next=p;始化操作总结资料在顺序表里插入一个元素在顺序表里删除一个元素总结资料在顺序表里查找一个元素顺序表的合并总结资料线性表的单链表存储结构为结构指针类型查找元素总结资料在单链表中插入一个元素在单链表中删除一个储结构总结资料栈的顺序存储栈可使用的最大容量栈的初始化取栈顶元素总结资料

15、入栈出栈转换为进制总结资料移动圆盘将塔座上按直径由小到大且至上而下编号为至的个圆盘按规则搬到塔座上可用作辅助塔座将编号为的圆盘从移列的定义初始化总结资料销毁队列入队操作出队操作总结资料循环对列定义队列的最大长度队列的元素空间头指针指示器尾指针指示器初始化操作总结资料入队操作出队操作求队列长度总结资料数组的顺序存储表示数组元素基址数-总结资料 P31,合并单链表 void mergelist_L(LinkList&La,LinkList&Lb,LinkList&Lc)pa=La-next;pb=Lb-next;Lc=pc=La;while(pa&pb)if(pa-data data)pc-nex

16、t=pa;pc=pa;pa=pa-next;else pc-next=pb;pc=pb;pb=pb-next;pc-next=pa?pa:pb;free(Lb);P31,线性表的静态单链表存储结构#define MAXSIZE 1000 typedef struct ElemType data;int cur;component,SlinkListMAXSIZE;始化操作总结资料在顺序表里插入一个元素在顺序表里删除一个元素总结资料在顺序表里查找一个元素顺序表的合并总结资料线性表的单链表存储结构为结构指针类型查找元素总结资料在单链表中插入一个元素在单链表中删除一个储结构总结资料栈的顺序存储栈可使

17、用的最大容量栈的初始化取栈顶元素总结资料入栈出栈转换为进制总结资料移动圆盘将塔座上按直径由小到大且至上而下编号为至的个圆盘按规则搬到塔座上可用作辅助塔座将编号为的圆盘从移列的定义初始化总结资料销毁队列入队操作出队操作总结资料循环对列定义队列的最大长度队列的元素空间头指针指示器尾指针指示器初始化操作总结资料入队操作出队操作求队列长度总结资料数组的顺序存储表示数组元素基址数-总结资料 P32,定位函数 int LocateElem_SL(SlinkList s,ElemType e)i=s0.cur;while(i&si.data!=e)i=si.cur;return i;P33,void Ini

18、teSpace_SL(SlinkList&space)for(i=0;i=S.stacksize)S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType);if(!S.base)exit(OVERFLOW);S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;*S.top+=e;return OK;出栈 Status Pop(SqStack&S,SelemType&e)if(S.top=S.base)return ERROR;e=*-S.

19、top;return OK;P48,转换为 8 进制 void conversion()始化操作总结资料在顺序表里插入一个元素在顺序表里删除一个元素总结资料在顺序表里查找一个元素顺序表的合并总结资料线性表的单链表存储结构为结构指针类型查找元素总结资料在单链表中插入一个元素在单链表中删除一个储结构总结资料栈的顺序存储栈可使用的最大容量栈的初始化取栈顶元素总结资料入栈出栈转换为进制总结资料移动圆盘将塔座上按直径由小到大且至上而下编号为至的个圆盘按规则搬到塔座上可用作辅助塔座将编号为的圆盘从移列的定义初始化总结资料销毁队列入队操作出队操作总结资料循环对列定义队列的最大长度队列的元素空间头指针指示器尾

20、指针指示器初始化操作总结资料入队操作出队操作求队列长度总结资料数组的顺序存储表示数组元素基址数-总结资料 InitStack(S);scanf(“%d”,&N);while(N)Push(s,N%8);N=N/8;while(!StackEmpty(s)Pop(S,e);printf(“%d”,e);P55,移动圆盘 void hanoi(int n,char x,char y,char z)/*将塔座 X上按直径由小到大且至上而下编号为 1 至 n 的 n 个圆盘按规则搬到塔座 Z上,Y可用作辅助塔座*/if(n=1)move(x,1,z);/*将编号为 1 的圆盘从 X移动 Z*/else

21、 hanoi(n-1,x,z,y);/*将 X上编号为 1 至 n-1 的圆盘移到 Y,Z作辅助塔*/move(x,n,z);/*将编号为 n 的圆盘从 X移到 Z*/始化操作总结资料在顺序表里插入一个元素在顺序表里删除一个元素总结资料在顺序表里查找一个元素顺序表的合并总结资料线性表的单链表存储结构为结构指针类型查找元素总结资料在单链表中插入一个元素在单链表中删除一个储结构总结资料栈的顺序存储栈可使用的最大容量栈的初始化取栈顶元素总结资料入栈出栈转换为进制总结资料移动圆盘将塔座上按直径由小到大且至上而下编号为至的个圆盘按规则搬到塔座上可用作辅助塔座将编号为的圆盘从移列的定义初始化总结资料销毁队

22、列入队操作出队操作总结资料循环对列定义队列的最大长度队列的元素空间头指针指示器尾指针指示器初始化操作总结资料入队操作出队操作求队列长度总结资料数组的顺序存储表示数组元素基址数-总结资料 hanoi(n-1,y,x,z);/*将 Y上编号为 1 至 n-1 的圆盘移动到 Z,X作辅助塔*/P61,链式队列的定义 define TRUE 1 define FALSE 0 typedef struct QNode QElemType data;struct QNode*next;QNode,*QueuePtr;typedef struct QueuePtr front;QueuePtr rear;L

23、inkQueue;P62,初始化 Status InitQueue(LinkQueue&Q)Q.front=Q.rear=(Queueptr)malloc(sizeof(QNode);if(!Q.front)exit(OVERFLOW);Q.front-next=NULL;return OK;始化操作总结资料在顺序表里插入一个元素在顺序表里删除一个元素总结资料在顺序表里查找一个元素顺序表的合并总结资料线性表的单链表存储结构为结构指针类型查找元素总结资料在单链表中插入一个元素在单链表中删除一个储结构总结资料栈的顺序存储栈可使用的最大容量栈的初始化取栈顶元素总结资料入栈出栈转换为进制总结资料移动圆

24、盘将塔座上按直径由小到大且至上而下编号为至的个圆盘按规则搬到塔座上可用作辅助塔座将编号为的圆盘从移列的定义初始化总结资料销毁队列入队操作出队操作总结资料循环对列定义队列的最大长度队列的元素空间头指针指示器尾指针指示器初始化操作总结资料入队操作出队操作求队列长度总结资料数组的顺序存储表示数组元素基址数-总结资料 销毁队列 Status DestroyQueue(LinkQueue&Q)while(Q.front)Q.rear=Q.front-next;free(Q.front);Q.front=Q.rear;return OK;入队操作 Status EnQueue(LinkQueue&Q,Qe

25、lemType e)p=(QueuePtr)malloc(sizeof(QNode);if(!p)exit(OVERFLOW);p-data=e;p-next=NULL;Q.rear-next=p;Q.rear=p;return OK;出队操作 始化操作总结资料在顺序表里插入一个元素在顺序表里删除一个元素总结资料在顺序表里查找一个元素顺序表的合并总结资料线性表的单链表存储结构为结构指针类型查找元素总结资料在单链表中插入一个元素在单链表中删除一个储结构总结资料栈的顺序存储栈可使用的最大容量栈的初始化取栈顶元素总结资料入栈出栈转换为进制总结资料移动圆盘将塔座上按直径由小到大且至上而下编号为至的个圆

26、盘按规则搬到塔座上可用作辅助塔座将编号为的圆盘从移列的定义初始化总结资料销毁队列入队操作出队操作总结资料循环对列定义队列的最大长度队列的元素空间头指针指示器尾指针指示器初始化操作总结资料入队操作出队操作求队列长度总结资料数组的顺序存储表示数组元素基址数-总结资料 Status DeQueue(LinkQueue&Q,QelemType&e)if(Q.front=Q.rear)return ERROR;p=Q.front-next;e=p-data;Q.front-next=p-next;if(Q.rear=p)Q.rear=Q.front;free(p);return OK;P64,循环对列定

27、义#define MAXQSIZE 100 /*队列的最大长度*/typedef struct QElemType*base;/*队列的元素空间*/int front;/*头指针指示器*int rear;/*尾指针指示器*/SqQueue;初始化操作 Status InitQueue(SqQueue&Q)Q.base=(QElemType*)malloc(MAXQSIZE*sizeof(QElemType);if(!Q.base)exit(OVERFLOW);始化操作总结资料在顺序表里插入一个元素在顺序表里删除一个元素总结资料在顺序表里查找一个元素顺序表的合并总结资料线性表的单链表存储结构为结

28、构指针类型查找元素总结资料在单链表中插入一个元素在单链表中删除一个储结构总结资料栈的顺序存储栈可使用的最大容量栈的初始化取栈顶元素总结资料入栈出栈转换为进制总结资料移动圆盘将塔座上按直径由小到大且至上而下编号为至的个圆盘按规则搬到塔座上可用作辅助塔座将编号为的圆盘从移列的定义初始化总结资料销毁队列入队操作出队操作总结资料循环对列定义队列的最大长度队列的元素空间头指针指示器尾指针指示器初始化操作总结资料入队操作出队操作求队列长度总结资料数组的顺序存储表示数组元素基址数-总结资料 Q.front=Q.rear=0;return OK;入队操作 Status EnQueue(SqQueue&Q,QE

29、lemType e)if(Q.rear+1)%MAXQSIZE=Q.front)return ERROR;Q.baseQ.rear=e;Q.rear=(Q.rear+1)%MAXQSIZE;return OK;)出队操作 Status DeQueue(SqQueue&Q,QElemType&e)if(Q.front=Q.rear)return ERROR;e=Q.baseQ.front;Q.front=(Q.front+1)%MAXQSIZE;return OK;求队列长度 int QueueLength(SqQueue Q)return(Q.rear-Q.front+MAXQSIZE)%MA

30、XQSIZE;始化操作总结资料在顺序表里插入一个元素在顺序表里删除一个元素总结资料在顺序表里查找一个元素顺序表的合并总结资料线性表的单链表存储结构为结构指针类型查找元素总结资料在单链表中插入一个元素在单链表中删除一个储结构总结资料栈的顺序存储栈可使用的最大容量栈的初始化取栈顶元素总结资料入栈出栈转换为进制总结资料移动圆盘将塔座上按直径由小到大且至上而下编号为至的个圆盘按规则搬到塔座上可用作辅助塔座将编号为的圆盘从移列的定义初始化总结资料销毁队列入队操作出队操作总结资料循环对列定义队列的最大长度队列的元素空间头指针指示器尾指针指示器初始化操作总结资料入队操作出队操作求队列长度总结资料数组的顺序存

31、储表示数组元素基址数-总结资料 P93/-数组的顺序存储表示 include#define MAX_ARRAY_DIM 8 typedef struct ELemType *base;/数组元素基址 int dim;/数组维数 int *bounds;/数组维数基址 int *constants;/数组映像函数常量基址 Array;P98,三元数组顺序表存储#define MAXSIZE 12500 typedef struct int i,j;ElemType e;Triple;typedef union Triple data MAXSIZE+1 ;int mu,nu,tu;TSMatri

32、x;P99,矩阵转置 Status TransposeSMatrix(TSMatrix M,TSMatrix&T)T.mu=M.nu;T.nu=M.mu;T.tu=M.tu;始化操作总结资料在顺序表里插入一个元素在顺序表里删除一个元素总结资料在顺序表里查找一个元素顺序表的合并总结资料线性表的单链表存储结构为结构指针类型查找元素总结资料在单链表中插入一个元素在单链表中删除一个储结构总结资料栈的顺序存储栈可使用的最大容量栈的初始化取栈顶元素总结资料入栈出栈转换为进制总结资料移动圆盘将塔座上按直径由小到大且至上而下编号为至的个圆盘按规则搬到塔座上可用作辅助塔座将编号为的圆盘从移列的定义初始化总结资料

33、销毁队列入队操作出队操作总结资料循环对列定义队列的最大长度队列的元素空间头指针指示器尾指针指示器初始化操作总结资料入队操作出队操作求队列长度总结资料数组的顺序存储表示数组元素基址数-总结资料 if(T.tu)q=1;for(col=1;col=M.nu;+col)for(p=1;p=M.tu;+p)if(M.datap.j=col)T.dataq.i=M.datap.j;T.dataq.j=M.datap.i;T.dataq.e=M.datap.e;+q;return OK;/TransposeSMatrix P100 Status FastTransposeSMatrix(TSMatrix

34、M,TSMatrix&T)/采用三元组顺序表存储表示,求稀疏矩阵 M 的转置矩阵 T。T.mu=M.nu;T.nu=M.mu;T.tu=M.tu;if(T.tu)for(col=1;colM.nu;col+)numcol=0;for(t=1;t=M.nu;+t)+numM.datat.j;/求 M 中每一列含非零元个数。始化操作总结资料在顺序表里插入一个元素在顺序表里删除一个元素总结资料在顺序表里查找一个元素顺序表的合并总结资料线性表的单链表存储结构为结构指针类型查找元素总结资料在单链表中插入一个元素在单链表中删除一个储结构总结资料栈的顺序存储栈可使用的最大容量栈的初始化取栈顶元素总结资料入栈

35、出栈转换为进制总结资料移动圆盘将塔座上按直径由小到大且至上而下编号为至的个圆盘按规则搬到塔座上可用作辅助塔座将编号为的圆盘从移列的定义初始化总结资料销毁队列入队操作出队操作总结资料循环对列定义队列的最大长度队列的元素空间头指针指示器尾指针指示器初始化操作总结资料入队操作出队操作求队列长度总结资料数组的顺序存储表示数组元素基址数-总结资料 copt1=1;/求第 col 列中第一个非零元在 b.data 中的序号 for(col=2;col=M.nu;+col)cpotcol=cpotcol-1+numcol-1;for(p=1;pdata)5 if(PreOrderTraverse(T-lch

36、ild,Visit)6 if(PreOrderTraverse(T-rchild,Visit)return OK;7 return ERROR;8 始化操作总结资料在顺序表里插入一个元素在顺序表里删除一个元素总结资料在顺序表里查找一个元素顺序表的合并总结资料线性表的单链表存储结构为结构指针类型查找元素总结资料在单链表中插入一个元素在单链表中删除一个储结构总结资料栈的顺序存储栈可使用的最大容量栈的初始化取栈顶元素总结资料入栈出栈转换为进制总结资料移动圆盘将塔座上按直径由小到大且至上而下编号为至的个圆盘按规则搬到塔座上可用作辅助塔座将编号为的圆盘从移列的定义初始化总结资料销毁队列入队操作出队操作总

37、结资料循环对列定义队列的最大长度队列的元素空间头指针指示器尾指针指示器初始化操作总结资料入队操作出队操作求队列长度总结资料数组的顺序存储表示数组元素基址数-总结资料 9 else return OK;10 中序遍历 Status InOrderTraverse(Bitree T,Status(*Visit)(TelemType e)1 2 if(T)3 4 if(InOrderTraverse(T-lchild,Visit)5 if(Visit(T-data)6 if(InOrderTraverse(T-rchild,Visit)return OK;7 return ERROR;8 9 els

38、e return OK;10 P131,中序遍历二叉树 Status InOrderTraverse(BiTree T,Status(*Visit)(TelemType e)InitStack(S);Push(S,T);While(!StackEmpty(S)while(GetTop(S,p)&p)Push(S,p-lchild);Pop(S,p);始化操作总结资料在顺序表里插入一个元素在顺序表里删除一个元素总结资料在顺序表里查找一个元素顺序表的合并总结资料线性表的单链表存储结构为结构指针类型查找元素总结资料在单链表中插入一个元素在单链表中删除一个储结构总结资料栈的顺序存储栈可使用的最大容量栈

39、的初始化取栈顶元素总结资料入栈出栈转换为进制总结资料移动圆盘将塔座上按直径由小到大且至上而下编号为至的个圆盘按规则搬到塔座上可用作辅助塔座将编号为的圆盘从移列的定义初始化总结资料销毁队列入队操作出队操作总结资料循环对列定义队列的最大长度队列的元素空间头指针指示器尾指针指示器初始化操作总结资料入队操作出队操作求队列长度总结资料数组的顺序存储表示数组元素基址数-总结资料 if(!StackEmpty(S)Pop(S,p);if(!Visit(p-data)return ERROR;Push(S,p-rchild);/if /While return OK;/InOrderTraverse Stat

40、us InOrderTraverse(BiTree T,Status(*Visit)(TelemType e)InitStack(S);p=T;While(p|!StackEmpty(S)if(p)Push(S,p);p=p-lchild;else Pop(S,p);if(!Visit(p-data)return ERROR;p=p-rchild;始化操作总结资料在顺序表里插入一个元素在顺序表里删除一个元素总结资料在顺序表里查找一个元素顺序表的合并总结资料线性表的单链表存储结构为结构指针类型查找元素总结资料在单链表中插入一个元素在单链表中删除一个储结构总结资料栈的顺序存储栈可使用的最大容量栈的

41、初始化取栈顶元素总结资料入栈出栈转换为进制总结资料移动圆盘将塔座上按直径由小到大且至上而下编号为至的个圆盘按规则搬到塔座上可用作辅助塔座将编号为的圆盘从移列的定义初始化总结资料销毁队列入队操作出队操作总结资料循环对列定义队列的最大长度队列的元素空间头指针指示器尾指针指示器初始化操作总结资料入队操作出队操作求队列长度总结资料数组的顺序存储表示数组元素基址数-总结资料 return OK;void PreOrder(BiTree root)/*先序遍历输出二叉树中的叶子结点,root 为指向二叉树根结点的指针*/if(root!=NULL)if(root-LChild=NULL&root-RChi

42、ld=NULL)printf(root-data);/*输出叶子结点*/PreOrder(root-LChild);/*先序遍历左子树*/PreOrder(root-RChild);/*先序遍历右子树*/统计叶子结点数目 LeafCount是保存叶子结点数目的全局变量,调用之前初始化值为 0*/void leaf(BiTree root)if(root!=NULL)leaf(root-LChild);始化操作总结资料在顺序表里插入一个元素在顺序表里删除一个元素总结资料在顺序表里查找一个元素顺序表的合并总结资料线性表的单链表存储结构为结构指针类型查找元素总结资料在单链表中插入一个元素在单链表中删

43、除一个储结构总结资料栈的顺序存储栈可使用的最大容量栈的初始化取栈顶元素总结资料入栈出栈转换为进制总结资料移动圆盘将塔座上按直径由小到大且至上而下编号为至的个圆盘按规则搬到塔座上可用作辅助塔座将编号为的圆盘从移列的定义初始化总结资料销毁队列入队操作出队操作总结资料循环对列定义队列的最大长度队列的元素空间头指针指示器尾指针指示器初始化操作总结资料入队操作出队操作求队列长度总结资料数组的顺序存储表示数组元素基址数-总结资料 leaf(root-RChild);if(root-LChild=NULL&root-RChild=NULL)LeafCount+;/*采用递归算法,如果是空树,返回 0;如果只

44、有一个结点,返回 1;否则为左右子树的叶子结点数之和*/int leaf(BiTree root)int LeafCount;if(root=NULL)LeafCount=0;else if(root-lchild=NULL)&(root-rchild=NULL)LeafCount=1;else LeafCount=leaf(root-lchild)+leaf(root-rchild);/*叶子数为左右子树的叶子数目之和*/return LeafCount;P131,建立二叉链表方式存储的二叉树 Status CreateBiTree(BiTree&T)scanf(&ch);始化操作总结资料在

45、顺序表里插入一个元素在顺序表里删除一个元素总结资料在顺序表里查找一个元素顺序表的合并总结资料线性表的单链表存储结构为结构指针类型查找元素总结资料在单链表中插入一个元素在单链表中删除一个储结构总结资料栈的顺序存储栈可使用的最大容量栈的初始化取栈顶元素总结资料入栈出栈转换为进制总结资料移动圆盘将塔座上按直径由小到大且至上而下编号为至的个圆盘按规则搬到塔座上可用作辅助塔座将编号为的圆盘从移列的定义初始化总结资料销毁队列入队操作出队操作总结资料循环对列定义队列的最大长度队列的元素空间头指针指示器尾指针指示器初始化操作总结资料入队操作出队操作求队列长度总结资料数组的顺序存储表示数组元素基址数-总结资料

46、if(ch=)T=NULL;else if(!(T=(BiTNode*)malloc(sizeof(BiTNode)exit(OVERFLOW);T-data=ch;CreateBiTree(T-lchild);CreateBiTree(T-rchild);return OK;int PostTreeDepth(BiTree bt)/*后序遍历求二叉树的高度递归算法*/int hl,hr,max;if(bt!=NULL)hl=PostTreeDepth(bt-LChild);/*求左子树的深度*/hr=PostTreeDepth(bt-RChild);/*求右子树的深度*/max=hlhr?h

47、l:hr;/*得到左、右子树深度较大者*/return(max+1);/*返回树的深度*/始化操作总结资料在顺序表里插入一个元素在顺序表里删除一个元素总结资料在顺序表里查找一个元素顺序表的合并总结资料线性表的单链表存储结构为结构指针类型查找元素总结资料在单链表中插入一个元素在单链表中删除一个储结构总结资料栈的顺序存储栈可使用的最大容量栈的初始化取栈顶元素总结资料入栈出栈转换为进制总结资料移动圆盘将塔座上按直径由小到大且至上而下编号为至的个圆盘按规则搬到塔座上可用作辅助塔座将编号为的圆盘从移列的定义初始化总结资料销毁队列入队操作出队操作总结资料循环对列定义队列的最大长度队列的元素空间头指针指示器

48、尾指针指示器初始化操作总结资料入队操作出队操作求队列长度总结资料数组的顺序存储表示数组元素基址数-总结资料 else return(0);/*如果是空树,则返回 0*/void PrintTree(Bitree root,int nLayer)/*按竖向树状打印的二叉树*/if(root=NULL)return;PrintTree(root-rchild,nLayer+1);for(int i=0;idata);PrintTree(root-lchild,nLayer+1);P135 双亲表示法的形式说明如下#define MAX_TREE_SIZE 100 typedef struct PT

49、Node TelemType data;int parent;PTNode;typedef struct PTNode nodes MAX_TREE_SIZE;int r,n;始化操作总结资料在顺序表里插入一个元素在顺序表里删除一个元素总结资料在顺序表里查找一个元素顺序表的合并总结资料线性表的单链表存储结构为结构指针类型查找元素总结资料在单链表中插入一个元素在单链表中删除一个储结构总结资料栈的顺序存储栈可使用的最大容量栈的初始化取栈顶元素总结资料入栈出栈转换为进制总结资料移动圆盘将塔座上按直径由小到大且至上而下编号为至的个圆盘按规则搬到塔座上可用作辅助塔座将编号为的圆盘从移列的定义初始化总结资

50、料销毁队列入队操作出队操作总结资料循环对列定义队列的最大长度队列的元素空间头指针指示器尾指针指示器初始化操作总结资料入队操作出队操作求队列长度总结资料数组的顺序存储表示数组元素基址数-总结资料 Ptree;孩子表示法 typedef struct CTNode int child;struct CTNode *next;*ChildPtr;typedef struct TelemType data;ChildPtr firstchild;CTBox;typedef struct CTBox nodes MAX_TREE_SIZE ;int n,r;Ctree;孩子兄弟表示法的类型定义如下 ty

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁