
数据结构/算法
zuiziyoudexiao
真正的自由不是随心所欲,而是自我主宰,若求随心所欲,则必随波逐流。
展开
-
c语言笔记
预处理指令(加载库函数)#include<stdio.h>#include<string.h>c语言数据类型 - 整型:int %d - 浮点型:float %f,double %f - 字符型:char %c - 布尔型:bool原创 2019-03-08 00:14:11 · 285 阅读 · 0 评论 -
getchar与getch函数的区别
输入输出缓冲流的概念 当通过键盘向计算机显示器屏幕输出字符串时,计算机先把键盘输入的字符存到缓冲区中,再从缓冲区读取数据输出显示到屏幕上。这样数据目标不用考虑数据源的发送频率只是从缓冲区中依次取出下一个数据。从而保证了数据发送的完整性,同时也提高了程序的效率。getchar函数1.getchar函数的作用是从缓冲流中读入一个字符,如果缓冲区没有数据才会等待键盘输入...原创 2018-05-18 14:57:05 · 2319 阅读 · 0 评论 -
输出100-200间的所有素数
输出100-200间的所有素数#include<stdio.h>int main(){ int i,j; int flag; for(i=100;i<=200;i++){ flag=0; for(j=2;j<i;j++){ if(i%j==0){ flag=1; } ...原创 2018-04-15 00:44:47 · 6515 阅读 · 0 评论 -
一个带头结点单链表的创建
/* * 单链表的创建 */#include<stdio.h>#include<stdlib.h>typedef struct Node{ int data; struct Node *next;}Node;int count=0; //记录链表长度int main(){ Node *creat();//函数声明 Node *pt,*p;...原创 2018-05-18 10:03:06 · 19883 阅读 · 2 评论 -
单链表的基本操作
/* * 单链表的基本操作 */#include<stdio.h>#include<stdlib.h>typedef struct Node{ int data; struct Node *next;}Node;int main(){Node *creat();Node *insert(Node *head);Node *insert2(...原创 2018-05-19 13:17:27 · 285 阅读 · 0 评论 -
单循环链表的基本操作
/* * 单循环链表的基本操作 */#include<stdio.h>#include<stdlib.h>typedef struct Node{ int data; struct Node *next;}Node;int main(){Node *creat();Node *insert(Node *head);Node *insert...原创 2018-05-19 13:20:38 · 3158 阅读 · 0 评论 -
双向链表的基本操作
/* * 双向链表的基本操作 */#include<stdio.h>#include<stdlib.h>typedef struct Node{ int data; struct Node *prior; struct Node *next;}Node;int main(){Node *creat();Node *insert(Node...原创 2018-05-19 13:21:32 · 280 阅读 · 0 评论 -
顺序表的插入和删除操作
/* * 顺序表的插入和删除 */#include<stdio.h>int main(){ int l[50]; int n=10,i; for(i=1;i<=n;i++){ l[i-1] = i; } printf("初始化一个有十个元素的线性表\n"); for(i=0;i<n;i++){...原创 2018-05-19 15:33:34 · 3413 阅读 · 1 评论 -
顺序栈的基本操作
/* * 用顺序表实现栈的操作 */#include<stdio.h>int stack[10]; //栈的定义int top = -1; //栈顶指针(一个保存数组下标的变量)typedef struct{ char data[10]; int top;}SeqStack;int main(){ void InitStack(SeqStack ...原创 2018-05-23 19:06:10 · 362 阅读 · 0 评论 -
链栈的基本操作
/* * 链栈的实现 */#include <stdio.h>#include<stdlib.h>//用一个带头结点的单链表来表示栈typedef struct Node{ int data; struct Node *next;}Node;//另外定义一个结构体来保存链表的头结点,并将其作为栈顶typedef struct stac...原创 2018-05-23 19:08:27 · 610 阅读 · 0 评论 -
将一个数字各位逐个输出
//利用递归做int hhh(int a){ if(a>=10){ hhh(a/10); } printf("%d ",a%10);}//利用循环做int hahaha(int a){ for(;;){ printf("%d ",a%10); a = a/10; if(a<=0){ ...原创 2018-04-15 00:43:09 · 2240 阅读 · 1 评论 -
编一个程序将两个字符串连接起来
编一个程序将两个字符串连接起来#include<stdio.h>#include<string.h>int main(){ char a[100]; char b[100]; int i,j,l1,l2; printf("输入第一个字符串:"); gets(a); printf("输入第二个字符串:"); gets(b); ...原创 2018-04-15 00:38:02 · 27009 阅读 · 6 评论 -
猴子吃桃问题
猴子吃桃问题一只猴子有若干个桃子,第一天吃了一半后又多吃一个,第二天又吃了剩下的一半再多吃一个,直到第十天早上发现只剩下一个桃子,问猴子刚开始有多少个桃子#include<stdio.h>int main(){ int fan(int x); int a; a = fan(10); printf("%d\n",a);}int fan(int x){...原创 2018-04-14 23:08:22 · 1626 阅读 · 0 评论 -
用C语言求n阶魔方阵
/* 给出n值,输出n阶魔方阵(每一行,每一列和对角线之和都相等)1放在第一行中间从2开始以后的数按以下规则:每个数比前一个数行数减一,列数加一当上一个数行数为1,下一个数行数为n当上一个数列数为n,下一个数列数为1如果按以上规则确定的位置上已经有数,或上一个数为第一行第n列,把下一个数放在上一个数的下面 */#include<stdio.h>int main...原创 2018-04-14 23:13:25 · 11686 阅读 · 1 评论 -
折半查找法
用折半查找法对一个已经排好序的数组进行查找 *取中间元素与查找元素进行比较,如果查找元素比中间元素大,则在中间元素右边查找,如果查找元素比中间元素小,则在中间元素的左边查找。 *设查找范围下限为l=0,上限为h=n-1,求中点m=(l+h)/2,用X与中点元素am比较,若X等于am,即找到,停止查找;否则,若X大于am,替换下限l=m+1,到下半段继续>查找若X小于am,换上限h=m-...原创 2018-04-14 23:16:55 · 415 阅读 · 0 评论 -
汉诺塔问题
汉诺塔问题的处理是经典的递归思想递归的两大过程是回溯和递推,首先将一个n规模的复杂问题转化成n-1规模,一步一步直到简化为一个具体的结果,再通过这个具体结果和递推关系依次向外递推,最终解决所有问题。一个老和尚想把A座的64个盘子移动到C座上,但每次只能移动一个盘子。移动过程中可以利用B座。此问题可以分解为:老和尚让另外一个和尚把上面63个盘子移动到B座,自己把第64个盘子放到C座,再让这个...原创 2018-04-15 00:06:01 · 172 阅读 · 0 评论 -
输入一行字符,把字符串中最长的单词输出
输入一行字符,把字符串中最长的单词输出思路:先找出每个单词的结束下标和单词长度存在数组中,根据最长单词的结束下标和长度,输出最长单词#include<stdio.h>int main(){ char a[100]; int i; int j; int m=0,n=0;//用m来记录单词结束下标,用n来记录最长单词的长度 int b[100]={0}...原创 2018-04-15 00:13:50 · 14565 阅读 · 2 评论 -
c语言寻找矩阵鞍点
寻找一个方形矩阵的鞍点(该位置上的元素在该行最大,在该列最小)先找出矩阵每一行的最大值,在依次判断该行最大值是否为该列最小值。#include<stdio.h>int main(){ int a[5][5]; int b[5]; int i,j,t; int flag = 0;//用于标示数组b中是否存在不是-1的元素 printf("输入一个5*5二维数组...原创 2018-04-15 00:24:33 · 18652 阅读 · 0 评论 -
冒泡排序法和选择排序法
冒泡: 每次将相邻两个数比较,把小的调到前面,一次循环后最大的值便跑到最后,以此类推把次大值放到倒数第二的位置选择: 把第一个数分别和之后所有数比较,把小的调到前面,一次循环后最小的值跑到最前面,以此类推把次小值放到第二个位置对于n个元素的数组,两种方法都只需要进行n-1次循环,因为第n次循环只有一个元素不用比较冒泡j值从0开始到n-i-1,选择j值从i开始到n-1。int maop...原创 2018-04-15 00:31:47 · 240 阅读 · 0 评论 -
输入一行字符,统计其中有多少个单词
输入一行字符,统计其中有多少个单词#include<stdio.h>#include<string.h>int main(){ char a[1000]; int flag = 0; int i,count=1; gets(a); for(i=0;i<strlen(a);i++){ if(a[i]==' '&&a[...原创 2018-04-15 00:33:30 · 6752 阅读 · 0 评论 -
求一个n*n整型矩阵的对角线元素之和
求一个n*n整型矩阵的对角线元素之和从四周向中间进行遍历求和#include<stdio.h>int main(){ int a[20][20]; int n,s=0,s0,i,j; printf("输入n值:"); scanf("%d",&n); //给数组赋值 for(i=0;i<=n;i++){ for(j=0;...原创 2018-04-15 00:36:30 · 28129 阅读 · 1 评论 -
迭代法的思想
迭代法也称辗转法,是一种不断用旧值递推新值的过程。折半查找法,链表的创建过程均用到了迭代的思想。例如:有一个分数序列2/1,3/2,5/3,8/5,……求这个数列的前20项和//刚开始a表示第一项的分子,b表示分母,通过中间变量t不断用新值替代//旧值,最终遍厉整个数列#include<stdio.h>int main(){ double a = 2,b=1,...原创 2018-04-14 23:00:56 · 4196 阅读 · 0 评论