c语言
文章平均质量分 96
effility
我好菜啊,什么时候才会努力啊,傻瓜
展开
-
C语言中 . -> & * ** typedef符号或操作符的用法
大家在看数据结构清华版书时,经常会被里面的 * . -> typedef c语言 c++的切换看的云里雾里,运行里面伪代码经常很困扰,网上也大多把c语言和c++看成一起混合编译处理,导致大家单纯想理解c语言造成很多困扰,下面这篇文章仅针对于c语言详细说明上面几个符号的用法,帮助大家理解纯c代码。先说结论,在C语言中,对于一个结构体类型变量a上面两种写法是等价的对于上面这段代码可以看成在操作系统内部做了上图的操作,首先,创建了一块内存大小为4个字节,首地址0x0000,结束地址为0x0004,对于原创 2022-06-21 14:09:55 · 1891 阅读 · 1 评论 -
数据结构C语言线性表的顺序存储实现
原理是申请一段连续的内存空间,对这段内存空间进行相关操作实现基本的功能,大致实现了数据结构C语言版第二章顺序线性表的所有功能和算法,代码如下#include"stdio.h"#include"stdlib.h"#define OVERFLOW 0#define OK 1#define LIST_INIT_SIZE 20#define LISTINCREMENY 3#define TRUE 1#define FALSE 0/*结构体的定义如下,在该结构体中,有三个属性指针变量原创 2020-07-09 16:36:43 · 386 阅读 · 0 评论 -
c语言无向图的建立
c语言无向图有两个参数,一个是顶点的名称,另一个是边即两顶点之间是否存在边,存在记为1,不存在记为0存储结构如下#define MAX 100typedef struct Mgraph{ char vexs[MAX];//顶点表 int arc[MAX][MAX];//边表 int num_vert,num_edge;//定点数和边数} Mgraph,*l...原创 2018-09-15 15:41:17 · 8163 阅读 · 0 评论 -
opengl之两点之间的直线绘制c语音实现
#include<windows.h>#ifdef __APPLE__#include <GLUT/glut.h>#else#include <GL/glut.h>#endifvoid init(void){ glClearColor(1.0,1.0,1.0,0.0);//背景颜色的创建,全部为1.0为白色,全部为0.0为黑色 ...原创 2018-10-18 23:02:35 · 812 阅读 · 0 评论 -
DDA算法c语音的实现
#include <windows.h>#ifdef __APPLE__#include <GLUT/glut.h>#else#include <GL/glut.h>#endifvoid init(void)//窗口的创建{ glClearColor(1.0, 1.0, 1.0, 0.0); //三个1.0是白色背景,三个0.0是黑...原创 2018-10-18 23:37:40 · 1485 阅读 · 0 评论 -
c语言选择排序
选择排序开始的时候,扫描整个序列(扫描整个数组),找到数组中的最小数据和第一个进行交换,从第二个开始扫描,和第一个数据进行比较,比第一个小则记录数据并交换值,找出第一个最小后再在后面的数据依次进行本过程,直到完成最终的排序void SelectSort(int r[],int n)//r[]为数组,n为数组的大小{ for(int i=1;i<=n-1;i++)//把1当成数...原创 2018-11-11 21:55:54 · 184 阅读 · 0 评论 -
c语言之冒泡排序
冒泡排序的思想是将相邻的元素进行两两比较,交换位置,大的放在后面,如将五个数进行比较,第一次排序将最大的放到了第五个,第二次比较将次要大的放到了第四个,依次类推,实现有序化void BubbleSort(int r[],int n){ for(int i=1;i<=n-1;i++)//每次比较把最大的排在后面,进行N-1次后第一位一定是最小的 { fo...原创 2018-11-11 22:10:52 · 128 阅读 · 0 评论 -
c语言基数排序/桶排序
如果要排序的数字都是k位组成的十进制数,如3位的489,就可以采用基数排序,也称为桶排序排序步骤:对有效位为k的十进制数,可以把每个数字看成一个分量,如有效位为3的379的分量为3 7 9,设置十个桶,编号为0 1 2 3.....91:将要排序的n个整数置于一个单向队列中2:依次将队列中的每个数,按倒数第i的值x(如123倒数第一位的数字3开始,放入编号为3的桶中),放入编号...原创 2018-11-15 13:19:00 · 402 阅读 · 0 评论 -
c语言归并排序
归并排序是先将序列划分,然后进行递归,处理,最后把划分的序列合并void MergeSort(int r[],int s,int t)//r是要排序的序列,s是起始位置,t是末尾值{ int m,r1[1000];//排好序的序列合并到r1内 if(s==t)return;//如果首位置和末位置相当,则排序完成,也为递归退出的条件 else{ m=(...原创 2018-11-17 10:15:39 · 180 阅读 · 0 评论 -
c语言堆排序
堆排序的基本思想是:首先将待排序序列构造成一个堆,然后通过变换构造一个根节点大于叶节点的大顶堆。最后按照由右到左,由下到上的交换顺序进行交换(将右子树的右子树,最右下角的与根节点进行交换),每次交换完成后调整堆使其仍然满足大顶堆。...原创 2018-11-19 21:24:49 · 150 阅读 · 0 评论 -
c语言快速排序
快速排序是基于分治法的重要排序算法,按照记录的值的对序列进行划分,具体步骤为1:初始化取第一个记录(值)作为基准,设置两个参数i,j分别用来指示将要与基准记录进行比较的左侧记录位置和右侧记录位置,也就是本次划分的区间(第一个值记为i,最后一个值记为j,按照中间位置划分,一分为2)2:右侧扫描过程将基准记录(i值,开始为第一个值)与j指向的记录进行比较,如果j指向的记录的值大,则j向...原创 2018-11-17 17:28:45 · 162 阅读 · 0 评论 -
c语言二叉树的建立,遍历,求根的深度,叶子节点的个数
#include <stdio.h>#include <stdlib.h>typedef struct node{ char data; struct node *rchild,*lchild;}node,*linklist;void preorder_create(linklist *l)//先序创建二叉树{ char ch,t...原创 2018-09-06 23:19:31 · 2972 阅读 · 0 评论 -
c语言队列的顺序存储结构
这是根据顺序表实现的队列的顺序存储结构#include <stdio.h>#include <stdlib.h>typedef struct node{ int data[100]; int size;}node,*linklist;void create_queue(linklist *l)//队列的建立{ (*l)=(nod...原创 2018-09-02 21:46:16 · 390 阅读 · 0 评论 -
栈的链式存储结构的实现
栈的链式存储结构和线性表的链式很像,而且简单的多#include <stdio.h>#include <stdlib.h>typedef struct node//结构体定义{ int data;//数据域,存储数据 struct node *next;}node,*linklist;void create_stack(linklist...原创 2018-09-02 11:41:00 · 184 阅读 · 0 评论 -
关于链表的插入删除,查找
对于链表来说,插入,删除和查找是重要的操作,由于链表不想顺序表那样,以数组的形式表示,不能直接根据下标进行操作,解决这个问题的一个方法就是自己创建一个数字进行操作void list_insert(linklist l)//插入操作{ int i,j,x; i=0; printf("请输入插入的位置和数据\n"); scanf("%d %d",&i,&...原创 2018-08-30 18:16:29 · 214 阅读 · 0 评论 -
静态链表的实现
对于一般的动态链表来说,要动态分配,还要借助指针对于静态链表来说,不用借助指针,建立两个数组,一个数组存储数据,一个数组存储各个元素之间的位置关系从某方面来说,静态链表是顺序表和链表的结合体,即具有二者的有点,如,插入和删除时不需要移动元素,便于查找(某种情况下),但同时也具备了二者的缺点,首先就是失去了动态性,浪费空间,修改次数多了以后查找也不再方便#include <...原创 2018-08-30 23:38:29 · 293 阅读 · 0 评论 -
c语言循环链表的实现
单链表有一定的缺陷,就是单向性,只能从一个结点到下一个节点,而不能访问到上一个结点,而循环链表就可以解决这一问题,当然,用双向链表更加方便#include <stdio.h>#include <stdlib.h>typedef struct node{ int data; struct node *next;//指针域 int size...原创 2018-09-01 13:22:57 · 9201 阅读 · 4 评论 -
c语言循环队列的建立
对于队列来说,出队列就是在队列头部出来,然后将后面的元素移动前一位,使他重新变成从0开始的队列数组如果我们不移动就会遇到前面好多空位,却被判定为队满(后面在进队列的过程中进满了)称为假溢出循环队列就可以解决这个问题,‘’队满‘’时从头部开始重新插入#include <stdio.h>#include <stdlib.h>#define max 5typ...原创 2018-09-04 11:30:26 · 2626 阅读 · 0 评论 -
c语言链表的建立(非常详细)//关于malloc函数和typedef的一些问题
typedef是c语言中一个非常重要的关键字,有很多的用处1:自定义名称(int char.....)类似于define如执行下列语句后typedef int hahaha;hahaha x;等价于int x;//个人感觉这是一个闲着没事找事干的做法,明明可以直接用int代替,为啥还要在新定义一个呢,可能是为//了函数移植的方便吧,但是现在的我是感觉不出来有啥好处,可能以后想法...原创 2018-08-29 23:17:09 · 5781 阅读 · 3 评论 -
c语言实现约瑟夫环
需求分析一群小孩编号为1,2,…,n(n>0)围成一圈,有一个刚出锅的山芋在他们之间传递。假设刚开始由1号拿着山芋,然后依次计数把山芋交给下一个小孩,当数到某个特定的k时,拿着山芋的小孩退出游戏,然后从下一个小孩重新开始计数,如此不断,最后剩下的那个孩子就是幸运者。要求设计一个程序模拟次过程,并给出不同的n,k组合下那个幸运者是谁?1、 输入的形式和输入值的范围:演示程序以用户...原创 2018-09-01 22:36:45 · 6996 阅读 · 1 评论 -
c语言队列的链式存储
队列的链式存储的一种实现方法就是简化版的线性链表#include <stdio.h>#include <stdlib.h>typedef struct node//结点结构{ int data; struct node *next;}node,*linklist;typedef struct//队列的链表结构{ linklist...原创 2018-09-04 22:35:38 · 240 阅读 · 0 评论 -
c语言螺旋数组的实现
#ifndef XUNHUAN_H#define XUNHUAN_H#include <stdio.h>#include <stdlib.h>#define N 40//定义数组的最大容量void XunhuanCreate(int n,int a[N][N]);//采用循环的方法创建void DiguiCreate(int n,int a[N][N]);...原创 2018-09-04 22:39:52 · 2427 阅读 · 0 评论 -
c语言实现双向链表
单向链表有一定的缺陷,其中一个就是只能一条路走到黑,只能前进不能后退,但双向链表就解决了这一问题#include <stdio.h>#include <stdlib.h>typedef struct node{ int data; struct node *next; struct node *prior;}node,*linklis...原创 2018-09-02 10:11:56 · 2097 阅读 · 1 评论 -
栈的顺序存储结构
和线性表的顺序存储很像,但是基本操作要简单的多#include <stdio.h>#include <stdlib.h>#define MAX 100typedef struct sqstack{ int data[MAX]; int top;//栈顶,表示数组的大小}sqstack,*linklist;void create_st...原创 2018-09-02 11:06:57 · 154 阅读 · 0 评论 -
c语言线性表的链式存储的实现
下面是链表的一些基本操作,使用c语言实现#include "HA.h"int main(){ int e,n,select=1; LinkList L; LinkList T; printf("请输入所要创建链表的结点个数\n"); scanf("%d",&n); printf("**************************...原创 2018-07-01 17:19:58 · 3012 阅读 · 0 评论