- 博客(17)
- 收藏
- 关注
原创 链式二叉树的创建
节点构造typedef struct node( int data; struct node *left; struct node *right;)BTnode;①创建根节点root=(BTnode *)malloc(sozeof(BTnode));root->data=a[0];root->left=root->right=NULL; ②创建其他...
2018-02-27 07:48:44 2714 2
原创 二叉树——什么是二叉树?
1.二叉树基本形态(4钟):只有左子女,只有右子女,左右子女都有,只有根节点,空2.二叉树结构表示①二元组表示法②广义表3.二叉树性质①任意一颗非空二叉树的叶子节点总比双分支节点多一个②有n个节点的二叉树,有n-1条边③对二叉树按层标号:0,1,2编号为i的层最多放2^i个节点若一颗h层的而擦还是的每一层的节点个数都达到最大值,这成为h层的满二叉树④完全二叉树:a>概念:一颗h层的完全二叉树...
2018-02-26 20:18:40 837
原创 链表与数组的递归
链表的递归设head指向一个非空单向链表例一:正向输出链表数据域的值void PrintLink(ElemSN *head){ if(head){ printf("%d\t",head->data); PrintLink(head->next); }}例二:逆向输出单项链表数据域的值void PrintLink(ElemSN *hea...
2018-02-26 18:49:22 436
原创 链表的交叉
两条链表发生交叉:如图如何判断链表是否交叉?原理:如果两个链表相交,则指向最后一个节点的指针必定相等void JudgeNode(ElemSN *head1,ElemSN*head2){ for( ;head1->next;head1=head1->next); for( ;head2->next;head2=head2->next); if(he...
2018-02-26 16:41:03 728
原创 栈(stack)——什么是栈?
1.栈是一种特殊的线性结构①栈满足线性结构②栈特殊性:栈有特殊的存储方式,访问结构(先进先出,进和出在一个端)2.栈的操作:①入栈:向栈口放入数据元素(push)②出栈:从栈口取出数据元素(pop)栈顶指针(top):用来指向最后一个入栈元素入栈操作:设栈的最大长度为size,栈满不可入栈(上溢)[top=size-1]入栈:top=top+1;s[top]=数据元素出栈操作:只有栈顶元素才可出栈...
2018-02-26 09:15:05 6449 3
原创 带表头节点的单向链表
1.形态普通单向链表头节点前面增加一个空的表头节点2.表头节点数据域不用存储具体数值优点:查找链表不需要两个指针连动插入算法不用再区分头部中间3.实现带表头节点的单项链表ElemSN *CreadLink(int L)//定义链表长度{ ElemSN *head,*tail; head=tail=(ElemSN *)malloc(sizeof(ElemSN));//创建表头节点...
2018-02-23 10:58:05 2076
原创 单向链表节点的移动(排序)
单向链表的创建在这里不在赘述,详细请看另一篇文章《单向链表的创建》。在本篇文章中,主要通过举例的方式来帮大家理解单向链表节点的移动。本篇文章中创建节点用如下表示typdef struct node{ int date;//定义数据域 struct node * next;//定义指针域 } ElemSN; 例一:设head指向一个非空单项链表,设数据域值不重复,且都为...
2018-02-23 09:45:54 2367
原创 单向链表节点的删除
单向链表的创建在这里不在赘述,详细请看另一篇文章《单向链表的创建》。在本篇文章中,主要通过举例的方式来帮大家理解单向链表节点的删除。本篇文章中创建节点用如下表示typdef struct node{ int date;//定义数据域 struct node * next;//定义指针域 } ElemSN; 在链表节点的删除中,可以分为两种情况①删除头节点pDel=he...
2018-02-18 08:58:34 1472
原创 单向链表的遍历、查找
单向链表的创建在这里不在赘述,详细请看另一篇文章《单向链表的创建》。在本篇文章中,主要通过举例的方式来帮大家理解单向链表的基本遍历。本篇文章中创建节点用以下表示typdef struct node{ int date;//定义数据域 struct node * next;//定义指针域 } ElemSN; 例一:输出单向链表尾节点的值void PrintTail(El...
2018-02-17 21:23:48 6741
原创 单向链表的创建(正向建链、逆向建链)
正向创建单向链表(尾插)1.过程:①定义节点typdef struct node{ int date;//定义数据域 struct node * next;//定义指针域} ElemSN;②创建头节点,并使得头指针(head)和尾指针(tail)指向头节点Elemsn *head ,*tail;head=tail=(ElemSN*) mallco(sizeof(ElemSN))...
2018-02-14 17:53:11 2135 1
原创 顺序表中元素的删除
情景一:数据集合没有重复值设有数据集合Date={3,2,5,8,4,7,6,9};数据集合中元素不重复且无序目标:给定一个关键字“k”在Date中删除该元素int KeyWord(int Date[],int n, int key){ int i; for(i=0,j=n;i<n%%Date[i]!=key;i++);//查找key所在位置 if(Date[i]=...
2018-02-13 08:46:30 4527
原创 顺序表中元素的移动
例一:设数据集合Date中有若干个整型数据;Date={10,20,30,40,50,60,70};要求:将第一个数据移动至顺序表最后a>覆盖式移动:通过Date[n]=Date[n+1]的方式将元素整体前移,最后给最够一个元素赋值为第一个数值的值,完成元素移动。void MoveArray(int Date[],int n){ int x,j; x=Date[0]; ...
2018-02-11 23:00:14 1459
原创 顺序表数组的遍历
一:最大最小值问题a>在一个数据集合中(a[10]),没有重复值,有正有负。求正数中的次大次小;求负数中的次大次小int max1,max2,fmax1,fmax2,i;max1=max2=fmax1=max2=0;for(i=0;i<10;i++){ if(a[i]>0){ if(a[i]>max1){ max2=max1; max...
2018-02-10 16:12:38 1779
原创 顺序表数组——连续存储单元的应用
顺序表——数组:通过连续的存储单元来实现存储的数据集合要素:首地址,长度例一:利用数组输出13^100分析:长整型存储单元大小为4字节,最大可存储的数值为2147483647,显然13^100次方超出最大值,会产生溢出。 考虑利用数组进行存储,一个单元只存储一个数字(0~9)。 设数组a[N](N为足够大的数字),a[N-1]=1 k=a[...
2018-02-10 11:32:16 796
原创 字符串的删除
星号问题例:字符串s“********AB***CD********”1.删除全部*int i,j;if(s[i]!='*') s[j++]=s[i];s[j]=0; puts(s);2.删除前导* (1)寻找第一个非*下标 (2)覆盖 (3)适当位置添加结束符int i=0,j=0;while(s[i]=='*') i++;while(
2018-01-21 12:47:07 495
原创 基础循环——素数判断
素数又称质数,即只能被1和自己本身整除的数字1.最常见素数判断通过利用整型“i”遍历区间[2,n-1],判断是否数字“n”可以被“i”整除,如果可以被整除,则跳出循环,通过判断“i”与“n”关系,判断“n”是否为素数#includeint main(){ int i,n;//n代表被判断的数字 scanf("%d",&n); for(i=2;i<n;i++)
2018-01-21 10:06:26 1266 1
原创 迭代循环——输出一个数的逆置数
#includeint mian(){ int x,y,k=0; scanf("%d",&x); while(x){ y=x%10; k=k*10+y; x/=10; } printf("\n逆置数为:%d",&k);}
2018-01-20 22:55:50 577
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人