数据结构的求长操作
来源:互联网 发布:乐乎记录生活 编辑:程序博客网 时间:2024/05/16 11:47
1.顺序表的求长:
2.单链表的求长:
3.双链表的求长:
4.循环单链表的求长:
5.循环双链表的求长:
6.顺序串的求长:
10.链串的求长:
7.二叉树的求深度:
8.二叉树的求宽度:
int ListLength(SqList *L)//求线性表的长度{return(L -> length);}
2.单链表的求长:
int ListLength(LinkList *L)//求线性表的长度{LinkList *p = L;int i = 0;while (p -> next != NULL){i++;p = p -> next;}return(i);}
3.双链表的求长:
int ListLength(DLinkList *L)//求线性表的长度{DLinkList *p = L; int i = 0;while (p -> next != NULL){i++;p = p -> next;}return(i);}
4.循环单链表的求长:
int ListLength(LinkList *L)//求表长{LinkList *p = L;int i = 0;while (p -> next != L){i++;p = p -> next;}return(i);}
5.循环双链表的求长:
int ListLength(DLinkList *L)//求线性表的长度{DLinkList *p = L;int i = 0;while (p -> next != L){i++;p = p -> next;}return(i);}
6.顺序串的求长:
int StrLength(SqString s){return s.length;}
10.链串的求长:
int StrLength(LiString *s){int i = 0;LiString *p=s->next;while (p != NULL) {i++;p = p -> next;}return i;}
7.二叉树的求深度:
int BTNodeDepth(BTNode *b)//求二叉树b的深度{ int lchilddep,rchilddep; if (b == NULL) return(0); //空树的高度为0 else {lchilddep = BTNodeDepth(b -> lchild);//求左子树的高度为lchilddep rchilddep = BTNodeDepth(b -> rchild);//求右子树的高度为rchilddepreturn (lchilddep > rchilddep)? (lchilddep+1):(rchilddep+1); }}
8.二叉树的求宽度:
int BTWidth(BTNode *b) //求二叉树b的宽度{struct {int lno;//节点的层次编号BTNode *p;//节点指针} Qu[MaxSize];//定义顺序非循环队列int front, rear;//定义队首和队尾指针int lnum, max, i, n;front = rear = 0;//置队列为空队 if (b != NULL) {rear++;Qu[rear].p = b;//根节点指针入队Qu[rear].lno = 1;//根节点的层次编号为1while (rear != front)//队列不为空{front++;b = Qu[front].p;//队头出队lnum = Qu[front].lno;if (b -> lchild != NULL)//左孩子入队{rear++;Qu[rear].p = b -> lchild;Qu[rear].lno = lnum + 1;}if (b -> rchild != NULL)//右孩子入队{rear++;Qu[rear].p=b->rchild;Qu[rear].lno=lnum+1;}}max=0;lnum = 1; i = 1;while (i <= rear){n=0;while (i <= rear && Qu[i].lno == lnum) {n++; i++;}lnum = Qu[i].lno;if (n > max) max = n;}return max;}elsereturn 0;}
int Nodes(BTNode *b)//求二叉树b的节点个数{int num1, num2; if (b == NULL) return 0; else if (b -> lchild == NULL && b -> rchild == NULL) return 1; else { num1 = Nodes(b -> lchild); num2 = Nodes(b -> rchild); return (num1 + num2 + 1);}}
10.求二叉树的叶子结点数:
int LeafNodes(BTNode *b)//求二叉树b的叶子节点个数{int num1, num2; if (b == NULL) return 0; else if (b -> lchild == NULL && b -> rchild == NULL) return 1; else { num1 = LeafNodes(b -> lchild); num2 = LeafNodes(b -> rchild); return (num1 + num2);}}
- 数据结构的求长操作
- 数据结构的求元素值操作
- PTA数据结构与算法题目集(中文)4-3 求链式表的表长 (10分)
- 长整数的基本操作
- 长整数的基本操作
- 长整数的基本操作
- 长整数的基本操作
- 长整数的基本操作
- 长整数的基本操作
- 长整数的基本操作
- 长整数的基本操作
- 长整数的基本操作
- 长整数的基本操作
- 长整数的基本操作
- 长整数的基本操作
- 长整数的基本操作
- 长整数的基本操作
- 求圆周长和面积的程序
- Spring支持的事务策略
- 我的大学六年(单片机大师郭天祥原创)
- java base64
- poj 2253 Frogger 1797 Heavy Transportation
- :first选择器(jQuery)
- 数据结构的求长操作
- CPP改写的联系人
- Linux进程间通信方式
- Power BI中的QA功能预览
- lr学习笔记3:运行场景时遇到的问题及解决
- UVa 138 Street Numbers(数论&Pell方程)
- AIX常用命令略记
- WebShpere MQ 网络通信编程总结
- MOV EDI,EDI指令的解释(整理)