• 链表的三种排序（选择，插入，冒泡） bool Sort_List(Node* head){ int t = 0 ; int size = Size_List(head); // 选择排序 /* for (Node* temp = head->next; temp != NULL; temp = temp->next){ ...


#include "stdafx.h"
#include <stdlib.h>
//创建一个节点，data为value,指向NULL
Node* Create(int value){
}
//销毁链表
Node* temp;
}
return true;
}
//表后添加一个节点,Create(value)
Node* n = Create(value);
while (temp->next){
temp = temp->next;
}
temp->next = n;
return 0;
}
//打印链表
while (temp){
printf("%d->", temp->data);
temp = temp->next;
}
printf("\n");
}
//在链表的第locate个节点后（头节点为0）插入创建的节点Create(value)
bool Insert_List(Node* head, int locate, int value){
Node* p;
Node* n = Create(value);
if (locate < 0)
return false;
while (locate--){
if (temp->next == NULL){
temp->next = Create(value);
return true;
}
temp = temp->next;
}
p = temp->next;
temp->next = n;
n->next = p;
return true;
}
//删除第locate个节点后（头节点为0）的节点
Node* p;
if (locate < 0)
return false;
while (locate--){
if (temp == NULL){
return false;
}
temp = temp->next;
}
p = temp->next->next;
free(temp->next);
temp->next = NULL;
temp->next = p;
return true;
}
//获取链表长度（不包括头节点）
int size = 0;
while (temp->next){
temp = temp->next;
size++;
}
return size;
}
//链表的三种排序（选择，插入，冒泡）
int t = 0;
//选择排序
/*for (Node* temp = head->next; temp != NULL; temp = temp->next){
for (Node* p = temp; p != NULL; p = p->next){
if (temp->data > p->data){
printf("换%d和%d\n", temp->data, p->data);
t = temp->data;
temp->data = p->data;
p->data = t;
}
}
}*/
//插入排序
/*for (Node* temp = head->next->next; temp != NULL; temp = temp->next){
for (Node* p = head; p->next != NULL; p = p->next){
if (p->next->data > temp->data)
{
printf("换%d和%d\n", temp->data, p->next->data);
t = temp->data;
temp->data = p->next->data;
p->next->data = t;
}
}
}*/
//冒泡排序
for (Node* temp = head->next; temp->next != NULL; temp = temp->next){
for (Node* p = head->next; p->next != NULL; p = p->next){
if (p->data > p->next->data){
t = p->data;
p->data = p->next->data;
p->next->data = t;
}
}
}
return 0;
}

转载于:https://www.cnblogs.com/xin1998/p/7742317.html
展开全文
• 二叉树的基本性质 1）二叉树第i层上至多有 2^(i-1)（i ≥1）个结点； 2）深度为 h 二叉树中至多含有 2^h – 1 个结点； 3）若在任意一棵二叉树中，有 n0 个叶子结点，有 n2 个度为 2 结点，则：n0 = n2 + 1。 ...
关于二叉树的定义，网上有比较好的介绍，在这里就简单介绍二叉树的一些性质
二叉树的基本性质
1）二叉树的第i层上至多有 2^(i-1)（i ≥1）个结点；
2）深度为 h 的二叉树中至多含有 2^h – 1 个结点；
3）若在任意一棵二叉树中，有 n0 个叶子结点，有 n2 个度为 2 的结点，则：n0 = n2 + 1。
特殊形式的二叉树
1）满二叉树
特点：深度为h且含有2h-1个结点的二叉树，为满二叉树。图示满二叉树，结点编号为自上而下，自左而右。
2）完全二叉树（左图）
特点：指深度为k的，有n个结点的，且每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应，完全一致，则为完全二叉树。（右图）

3）平衡二叉树
特点：又称AVL树，它或为一棵空树，或具如下性质：其左子树和右子树都是平衡二叉树，且左、右子树的深度之差的绝对值不超过1。左、右子树的深度之差为平衡因子，平衡二叉树的平衡因子只能为0，-1，1。
关于二叉树的存储方式（顺序和链式存储）
（1） 顺序存储结构

用一组连续的存储单元存放二叉树的数据元素。结点在数组中的相对位置蕴含着结点之间的关系。
其所需的存储单元数为:2^h-1= 24-1 = 15，若父结点在数组中i下标处，其左孩子在2*i处，右孩子在2*i+1处。

（2）链式存储结构
链式存储结构的每个结点由数据域、左指针域和右指针域组成。左指针和右指针分别指向下一层的二叉树

放二叉树的数据元素。结点在数组中的相对位置蕴含着结点之间的关系
关于二叉树的三种遍历方式
（1）先序遍历(D L R): 访问根结点，按先序遍历左子树，按先序遍历右子树。
（2）中序遍历(L D R): 按中序遍历左子树，访问根结点，按中序遍历右子树。
（3）后序遍历(L R D): 按后序遍历左子树，按后序遍历右子树，访问根结点。

还是直接上代码吧~~这里用的是链式存储结构，相对顺序存储结构，前者所需存储容量更小，更易于理解~~

二叉树的结构体
struct Tree{
int data;//这里可以改成你想要的数据类型
tree *left;
tree *right;
};

初始化二叉树，添加数据
tree *initTree(tree* H){
H = NULL;
int data = 0;
printf(" 输入data \n ");
scanf("%d",&data);
if(data!=0){
H = (tree *)malloc(sizeof(tree));
H->data = data;
printf(" t data is %d \n",H->data);
printf(" 请输入左字树data \n");
H->left = initTree(H->left);
printf(" 请输入右字树data \n");
H->right = initTree(H->right);
}
return H;
}

先序，中序，后序遍历的递归算法(ps：递归真是个好东西~~，写出来的代码就是简洁~~)
/*
先序遍历
*/
void DLR(tree* T){
if(NULL!=T){
printf(" data is %5d \n ",T->data);
DLR(T->left);
DLR(T->right);
}
}
/*
中序遍历
*/
void LDR(tree* T){
if(NULL!=T){
LDR(T->left);
printf(" data is %5d \n",T->data);
LDR(T->right);
}
}
/*
后序遍历
*/
void LRD(tree* T){
if(NULL!=T){
LRD(T->left);
LRD(T->right);
printf(" data is %5d \n",T->data);
}
}

二叉树的层次遍历
void LOrder（tree* T） /* 层次遍历二叉树T */
{ treeQ[MAXNODE];     /* 辅助队列，MAXNODE为最大的队列容量 */
int f,r;               /* 队列的首、尾指针 */
if (T == NULL) return; /* 空树，直接返回 */
f = -1;                /* 队首，队尾指针初始化 */
r = 0;
Q[r] = T;              /* 树根进队 */
while( f != r )
{ f++;
printf(“%d”,Q[f]->data);   /* 访问队首结点的数据域 */
if (Q[f]->left!= NULL)  /* 将队首结点的左孩子入队列 */
{ r++;
Q[r] = Q[f]->left;  }
if (Q[f]->right!= NULL)  /* 将队首结点的右孩子入队列 */
{ r++;
Q[r] = Q[f]->right;  }
}
}

计算二叉树的深度;
/*计算树的深度*/
int deep(tree* H){
int d1 = 0;
int d2 = 0;
if(NULL!=H){
d1 = deep(H->left) +1;
d2 = deep(H->right) +1;
}
return d1>=d2? d1:d2;
}

计算总的节点数和叶子数
//计算总的节点数
int node(tree* H){
int n = 0;
if(NULL!=H){
n = node(H->left)+node(H->right) +1;
}
return n;
}
//计算叶子节点
int CountLeaf(tree* H){
if(NULL==H) return 0;
if((NULL==H->left)&&(NULL==H->right)){
return 1;
}
return CountLeaf(H->left) + CountLeaf(H->right);
}

全部代码如下
#include <stdio.h>
#include <malloc.h>
typedef  struct Tree tree ;
/*
定义二叉树的结构体
*/
struct Tree{
int data;
tree *left;
tree *right;
};
tree *p[100];
/*
初始化二叉树
*/
tree *initTree(tree* H){
H = NULL;
int data = 0;
printf(" 输入data \n ");
scanf("%d",&data);
if(data!=0){
H = (tree *)malloc(sizeof(tree));
H->data = data;
printf(" t data is %d \n",H->data);
printf(" 请输入左字树data \n");
H->left = initTree(H->left);
printf(" 请输入右字树data \n");
H->right = initTree(H->right);
}
return H;
}
/*
先序遍历
*/
void DLR(tree* H){
if(NULL!=H){
printf(" data is %5d \n ",H->data);
DLR(H->left);
DLR(H->right);
}
}

/*
中序遍历
*/
void LDR(tree* H){
if(NULL!=H){
LDR(H->left);
printf(" data is %5d \n",H->data);
LDR(H->right);
}
}

/*
后序遍历
*/
void LRD(tree* H){
if(NULL!=H){
LRD(H->left);
LRD(H->right);
printf(" data is %5d \n",H->data);
}
}

/*
计算树的深度
*/
int deep(tree* H){
int d1 = 0;
int d2 = 0;
if(NULL!=H){
d1 = deep(H->left) +1;
d2 = deep(H->right) +1;
}
return d1>=d2? d1:d2;
}
//计算总的节点数
int node(tree* H){
int n = 0;
if(NULL!=H){
n = node(H->left)+node(H->right) +1;
}
return n;
}
//计算叶子节点
int CountLeaf(tree* H){
if(NULL==H) return 0;
if((NULL==H->left)&&(NULL==H->right)){
return 1;
}
return CountLeaf(H->left) + CountLeaf(H->right);
}
void main(){
tree *H = (tree*)malloc(sizeof(tree)) ;
H = initTree(H);
printf("DLR : \n");
DLR(H);
printf("LDR : \n");
LDR(H);
printf("LRD : \n");
LRD(H);
printf("\n deep is %5d \n ",deep(H));
printf(" CountLeaf is %5d \n",CountLeaf(H));
printf(" node number is %5d  \n",node(H));
}
大概就这么多了。想起了在补充吧~~

3）平衡二叉树
特点：又称AVL树，它或为一棵空树，或具如下性质：其左子树和右子树都是平衡二叉树，且左、右子树的深度之差的绝对值不超过1。左、右子树的深度之差为平衡因子，平衡二叉树的平衡因子只能为3）平衡二叉树
特点：又称AVL树，它或为一棵空树，或具如下性质：其左子树和右子树都是平衡二叉树，且左、右子树的深度之差的绝对值不超过1。左、右子树的深度之差为平衡因子，平衡二叉树的平衡因子只能为0，-1，1。


展开全文
• C语言基本控制结构第三章 C语言基本控制结构 问题 一元二次方程根求解算法描述 3.1 程序的三种控制结构 ⒊循环结构Repetition ⒋复合语句 CompoundStatement 3.2 关系运算和逻辑运算 ⒉逻辑运算(Logical ...
三C语言的基本控制结构第三章 C语言的基本控制结构 问题 一元二次方程根求解算法描述 3.1 程序的三种控制结构 ⒊循环结构Repetition  ⒋复合语句 CompoundStatement 3.2  关系运算和逻辑运算 ⒉逻辑运算(Logical  Operator) C语言的逻辑运算 ⒊复杂逻辑关系的表示 ⒋运算的优先级 优先级总表 优先级特例 3.3 分支结构(选择结构Selection) ⑵ if – else 结构 ⑶ if –else if结构(Muliline ) if  else if结构举例： ⑷if语句的嵌套 举例：求一元二次方程ax2+bx+c=0的根。 ⒉switch语句(多分支结构) 语句标号的概念: 例：输出五分制对应的百分制范围。 3.4? 循环结构(Repetition) ⒈while 循环(当型循环) ⒉do – while循环(直到型循环) ⒊ for循环 for循环实例 ⒋循环应用的几个问题 多重循环 ⑵循环的中断(break)和继续(continue) ⑶无限循环和空循环 ⑷ goto语句 循环和分支相互嵌套 程序设计的基本方法 枚举法   Enumeration 存在有限状态；其中某些状态满足特定条件。 通过循环产生所有状态(枚举)。 对每一状态，按条件进行状态测试，满足条件的状态，为所求的解。 求100到200内的所有素数。 通过循环使i从101变化到199(枚举所有状态) 对每次循环的i进行是否是素数的测试，如果是素数，输出i。 枚举法举例： 程序如下：        ⒉求水仙花数(条件：三位数的个、十、百位的方和等于该数。153==13 +53 +33 )。 ⒊爱因斯坦阶梯问题(不定范围的枚举)。 思考题： 迭代法 Iteration 迭代是通过循环不断由旧值推导新值，并最后求解的过程。 迭代法有三个要点：       如人口每年按2%增长，现在人口有12亿，10年后人口有多少？ 迭代法举例 ⒉用梯形法求定积分 程序如下：       ⒊求s=a+aa+aaa+…+aaa…a。  0 void  main(void) {   int  i, ix,iCount=0,iSum=0;   for(i=1;i<=10;i++)        {                            scanf(“%d\n”, &ix);                       if( ix%2==0 )                 {                   iSum+=ix;                   iCount++;                  }         }  printf(“Num=%d\nSum=%d”,iCount,iSum); }     循环结构 分支结构 输入负数？ do{                                                  if(ix<=0)printf(“date error”);       } while(ix<=0);          算法的健壮性 注意：结构应完整的包含和被包含。         根据计算机的特点，结合循环与分支结构在程序设计时常使两 种常用的基本方法。 枚举法(穷举法) 迭代法         本专题将结合分支和循环介绍两种方法的基本思想和 具体实现！ ⒈求100到200之间的所有素数(只能被1和自身整除的数)。 对于自然数n，判断其是否为素数有以下三种方法： ①判断n是否能被从2到n-1范围内的数整除； ②判断n是否能被从2到(int)(n/2)范围的数整除； ③判断n是否能被从
展开全文
• 第2章 程序的灵魂算法;2.1 算法的概念;2.2 简单算法举例;... 三种基本结构;图2.18是当型循环的应用例子图2.19是直到型循环的应用例子 图2.18 图2.19;基本结构不一定只限于上面三种只要具有上述4个特点的都可以
• 第二章 算法的基本概念2.1;2.1 算法的概念2.1;一个程序应包括l 对数据的;例1求12345最;改进的算法S1: 使t=1S;...三种基本结构流程图1顺序结;当型直到型3循环结构1当型;用N-S流程图表示算法1973;三种基本
• 3.1 字符串及其抽象数据类型3.1.1 基本概念字符串简称串，是一特殊线性表，其特殊性主要在于表中每个元素是一个字符。一个串可以记为 s="s0s1..sn-1"(n >= 0)，其中s是串名字，双引号括起来字符序列是...
3.1 字符串及其抽象数据类型3.1.1 基本概念字符串简称串，是一种特殊的线性表，其特殊性主要在于表中的每个元素是一个字符。一个串可以记为 s="s0s1..sn-1"(n >= 0)，其中s是串的名字，双引号括起来的字符序列是串的值。3.1.2 抽象数据类型ADT String isoperationsString createNullStr(void) // 创建一个空串int isNullStr(String s) // 判断串s是否为空int length(String s) // 返回s的长度String concat(String s1, String s2) // 返回将串s1和串s2拼接在一起构成的一个新串String subStr(String s, int i, int j) // 在串s中，求从串的第i个字符开始连续j个字符所构成的子串int idnex(String s1, String s2)  // 如果串s2是s1的子串，则可求串s2在串s1中的第一次出现的位置end ADT String3.2 字符串的实现3.2.1 顺序表示顺序串类型定义如下：typedef struct SeqString {int MAXNUM;int n;char *c;} SeqString;创建空顺序串SeqString *createNullStr_Seq(int m) {SeqString *pstr = (SeqString *) malloc(sizeof(SeqString));if (pstr != NULL) {pstr->c = (char *) malloc(sizeof(char) * m);if (pstr->c) {pstr->n = 0;pstr->MAXNUM = m;return pstr;} else {free(pstr);}}return NULL;}求顺序表示的串的子串SeqString *substr_seq(SeqString *s, int i, int j) {SeqString *s1;int k;s1 = createNullStr_seq(j);if (s1 == NULL) {return NULL;}if (i > 0 && i <= s->n && j > 0) {if (s->n < i+j -1) {j = s->n - i + 1;}for (k = 0; k < j; k++) {s1->c[k]= s->c[i+k-1];}s1->n = j;}return s1;}3.2.2 链接表示链表定义如下：typedef struct StrNode {char c;struct StrNode * link;} StrNode;typedef struct StrNode *LinkString;创建带头结点的空链串LinkString createNullStr_link(void) {LinkString pst;pst = (LinkString) malloc(sizeof(StrNode));if (pst != NULL) {pst->link = NULL;}return pst;}求单链表示的串的子串LinkString subStr_link(LinkString s, int i, int j) {LinkString s1;StrNode *p, *q, *t;int k;s1 = createNullStr_link();if (s1 == NULL) {return NULL;}if (i < 1 || j < 1) {return s1;}p = s;for (k = 1; k <= i; k++) [if (p != NULL) {p = p->link;} else {return s1;}}if (p == NULL) {return s1;}t = s1;for(k = 1; k <= j; k++) {if (p != NULL) {q = (StrNode *) malloc(sizeof(StrNode));if (q == NULL) {return s1;}q->c = p->c;q->link = NULL;t->link = q;t = q;p = p->link;}}return s1;}3.3 模式匹配3.3.1 朴素的模式匹配基本思想实现模式匹配的最简单做法是：用p中的字符串依次与t中的字符比较。如下图(a)所示，如果t0 = p0, t1 = p1, ..., tm-1 = pm-1，则匹配成功，返回第一次出现的位置是从第一个字符t0开始。否则必有某个i(0<= i <= m-1)，使得 ti != pi，这是可将p右移一个字符，重新开始比较。朴素的模式匹配例子如下：朴素的模式匹配举例朴素的模式匹配算法/*** t为主串，p为匹配串*/int index(SeqString *t, SeqString *p) {int i, j;i = 0;j = 0;while(i < p->n && j < t->n) {if (p->c[i] == t->c[j]) { // 继续匹配下一个字符i++;j++;} else { // 主串、子串回溯，重新下一次匹配j = j - i + 1;i = 0;}}if (i >= p->n) {return j-p->n+1; // 返回p中低一个字符在t中的序号} else {return -1; // 匹配失败返回-1}}缺点：效率不高3.3.2 无回溯的模式匹配基本思想造成朴素匹配算法速度慢的原因是有回溯，而这些回溯不一定是必要的。为了提高提配的速度，要能找到一个大于等于1的右移的位数，并且确定p和t继续比较的字符。最为理想的情况，匹配过程对于t是无回溯的。也就是在右移若干位后，应该立即用p中一个新的字符pk(k < i) 和 tj(甚至tj+1)继续进行比较。无回溯的模式匹配算法int pMatch(SeqString *t, SeqString *p, int *next) {int i, j;i = 0, j = 0;while (i n && j n) {if (i == -1 || p->c[i] == t->c[j]) {i++; j++;} else {i = next[i];}}if (i >= p->n) {return j - p->n + 1; // 匹配成功} else {return -1; // 匹配失败}}计算next数组makeNext(SeqString *p, int *next) {int i = 0, k = -1;next[0] = -1;while (i < p->n - 1) {while(k >=0 && p->c[i] != p->c[k]) {k = next[k];}i++;k++;next[i] = k;}}计算next数组(改进后)makeNext(SeqString *p, int *next) {int i = 0, k = -1;next[0] = -1;while (i < p->n - 1) {while (k >= 0 && p->c[i] != p->c[k]) {k = next[k];}i++;k++;if (p->c[i] == p->c[k]) {next[i] = next[k];} else {next[i] = k;}}}
展开全文
• 栈，有两种实现方式，一是静态，由数组实现，一种是动态，由链表...这里主要罗列出来了栈创建，添加元素，删除元素，清空栈，打印栈这几种基本功能，实现语言为C语言，里面测试数据可以任意更换。 #include #in
• （1）数据结构，顾名思义，数据的结构，而如何将数据组合成一种结构了，C语言里用到了struct结构体类型、union联合体类型、enum枚举类型这三种。 struct结构体类型，顾名思义，是一种结构，一种由基本数据类型...
• C语言中常用的编程结构有三种，算法的三种基本结构是顺序结构，分支结构，循环结构。 顺序结构：代码从前往后依次执行，没有任何“拐弯抹角”，不跳过任何一条语句，所有的语句都会被执行到。 选择结构：也叫分支...
• 第2章 顺序结构程序设计 2.1 结构化程序设计的基本结构 2.2 赋值语句 2.3 输入输出语句 实例的部分程序 2.1 结构化程序设计的基本结构 2.1.1 算法 2.1.2 三种基本结构 2.1.3 语句的概念 2.1.1 算法 1. 算法的概念 ...
• 几个基本概念 数据：数据是信息的载体，是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。 ...数据结构的三要素 逻辑结构 存储结构 数据运算 数据的逻
• ;数据结构 对数据描述在程序中要指定用到哪些数据以及这些数据类型和数据组织形式 算法 对操作描述即要求计算机进行操作步骤;...三种基本结构的特点;用N-S流程图表示算法;结构化程序设计方法
• 1996年，计算机科学家Bohm和Jacopini证明了这样事实：“任何简单或复杂程序都可以由顺序结构、选择结构和循环结构这三种基本结构组合而成。” 目录 顺序结构 选择结构 循环结构 break和continue语句 1、顺序...
• 第八次课-----顺序结构和选择结构  一、算法的基本结构  算法：解决问题的方法(结构) ... 算法的三种基本结构：顺序结构、选择结构（分支结构）和循环结构。  二、顺序结构:按语句书写的先后顺序依次执行的结...
• 4.2 C语言的三种基本结构;控制结构;C语言程序设计算法的描述 SCS-SWPU;C语言程序设计算法的描述 SCS-SWPU;C语言程序设计第二章 数据类型运算符和表达式 SCS-SWPU;10;11;C语言程序设计第二章 数据类型运算符和表达式 ...
• 对于任何一种计算机程序设计语言来说,程序设计的基本结构不外乎三种,即顺序结构、选择结构、循环结 构。循环结构是算法语言中应用最普遍也是最重要程序设计结构,本文通过具体实例阐述《C语言》程序设计中循环 ...
• C语言和程序设计1 C语言和程序设计1.1 C语言1.2 C语言程序设计1.2.1 模块化设计思想1.3 算法2 C程序设计基础知识2.1 标识符、常量和变量2.1.1 变量2.2 数据类型2.3 运算符和表达式2.3.1 运算符优先级和结合性3 基本...
• C语言总结 第一章、C语言概述 ...三种基本结构和改进流程图 顺序结构 选择结构 循环结构 当型结构 直到型结构 结构化程序设计方法 第一章、C语言概述 格式特点 习惯用小写字母，大小写敏感 不适用行号，无程...
• 1三种基本结构 Bohra和Jacopini提出了以下三种基本结构 顺序结构选择结构循环结构 用这三种基本结构作为表示一个良好算法的基本单元 2.3 结构化程序设计方法 三种基本结构的图示 顺序结构 选择结构 循环结构的图示 ...
• 第1章 C语言的程序结构;目 录;C语言的特点;第一个C程序Hello, World;C程序的基本结构;算法 (Algorithm;三种基本算法结构;顺序结构;选择结构;...三种基本算法结构共同特点;结构化程序设计方法;结束;
• C语言总结第一章、C语言概述格式特点结构特点函数与主函数函数的组成程序语句注释预编译处理命令32个关键字：（由系统定义，不能重作其他定义）9种控制语句：34种运算符：数据类型第二章、算法算法的特性三种基本...
• 程序的三种基本结构;程序的三种基本结构;C语句概述;赋值表达式;赋值表达式;赋值表达式;赋值表达式;赋值表达式;数据输入输出的概念;字符数据的输入输出;字符数据的输入输出;简单的格式输入输出;简单的格式输入输出;...
• 二、 数据结构的三种层次 1、逻辑结构 主要描述数据元素之间的逻辑关系 2、物理结构 主要描述数据元素之间的位置关系 3、运算结构 主要描述数据结构的实现操作 三、 逻辑结构的分类 1、集合结构 主要描述所
• 2.4.3 三种基本结构和改进流程图 28 2.4.4 用N-S 流程图表示算法 29 2.4.5 用伪代码表示算法 30 2.4.6 用计算机语言表示算法 31 2.5 结构化程序设计方法 31 3 数据类型、运算符与表达式 3.1 Ｃ语言的数据类型 32 ...
• 本节主要说了递归设计和算法实现，以及递归的基本例程斐波拉契数列、strlen递归解法、汉诺塔和全排列递归算法。 一、递归设计和实现 1.递归从实质上是一数学解决问题思维，是一分而治之思想。 ...
• 2.4.3 三种基本结构和改进流程图 28 2.4.4 用N-S 流程图表示算法 29 2.4.5 用伪代码表示算法 30 2.4.6 用计算机语言表示算法 31 2.5 结构化程序设计方法 31 3 数据类型、运算符与表达式 3.1 Ｃ语言的数据类型 32 ...
• 程序的三种基本结构 结构化程序设计 基本思想任何程序都可以用三种基本结构表示限制使用无条件转移语句goto 结构化程序由三种基本结构反复嵌套构成的程序叫~ 优点结构清晰易读提高程序设计质量和效率 三种
• 三种基本结构=顺序结构+选择结构+循环结构 3.1.2 算法的表示方法 自然语言表示算法；流程图表示算法，N-S流程图表示算法，伪代码表示算法 1. 流程图：起止框（开始/结束）+处理框（处理步骤）+判断框（判断条件...

...

c语言 订阅