#include<stdio.h>
//快速排序
void quickSort(int a[],int left,int right)
{int i,j,temp;i = left;j = right;temp = a[left];if(left>right)return;while(i!=j){while(a[j]>=temp &&j>i)j--;if(j>i)a[i++] = a[j];while(a[i]<=temp&&j>i)i++;if(j>i)a[j--] = a[i];}a[i] = temp;quickSort(a,left,i-1);quickSort(a,i+1,right);
}
//冒泡排序
void bubbleSort(int a[],int len)
{int i,j,temp;for(i = 0;i<len;i++){ for(j = 0...
约瑟夫环问题(C语言、数据结构版)一、问题描述N个人围城一桌(首位相连),约定从1报数,报到数为k的人出局,然后下一位又从1开始报,以此类推。最后留下的人获胜。(有很多类似问题,如猴子选代王等等,解法都一样)二、思路分析 (1)可将人的顺序简单编号,从1到N; (2)构造一个循环链表,可以解决首位相连的问题,同时如果将人的编号改为人名或者其他比较方便 (3)将人的编号插入到结构体的Data域;...
StaticLinkLinst.h#ifndef STATIC_LINKLIST_H
#define STATIC_LINKLIST_Htypedef void StaticLinkListNode; //静态单链表节点
typedef void StaticLinkList; //静态单链表/*
* 创建静态单链表
* @param capacity 静态单链表的最大容量
* @return 返回静态单链表的指针
*/
StaticLinkList* StaticLinkList_Create(int capacity);/*
* 销毁静态单链表
* @param list 静态单链表的指针
*/
void StaticLinkList_Destr...
在深入浅出数据结构(7)的末尾,我们提到了栈可以用于实现计算器,并且我们给出了存储表达式的数据结构(结构体及该结构体组成的数组),如下://SIZE用于多个场合,如栈的大小、表达式数组的大小#define SIZE 1000//表达式的单个元素所使用的结构体
typedef struct elem {int num = 0; //若元素存储操作数则num为该操作数char oper = ‘=‘; //若元素存储操作符则oper为该操作符bool IsNum = false; //用于判断元素是否为操作...
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>typedef
struct Arr {int *pBase; //数组第一个元素地址int len; //数组长度int cnt; //当前有效元素数量} Array;void init_array(Array *, int); //初始化数组void show_array(Array *); //遍历打印数组bool is_empty(Array *); //判断数组是否空bool insert_array(Array *, int pos, int); //插入元素 pos表示在第几个元素前面插入bool append_array(Array *...
中序遍历二叉排序树输入一整数序列,建立二叉排序树,然后中序遍历。输入第一行为整数的个数n,第二行是具体的n个整数。建立二叉排序树,然后输出中序遍历的结果。输入示例:5
1 6 5 9 8输出:1 5 6 8 9 #include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct stu{int data;struct stu *lc,*rc;
}bitree;
bitree *creat(int n){int ch;bitree *q[100];//设置指针型数组构建队列 int front,rear;int num=0,i;b...
1. 头结点表示链表中第一个结点的存储位置2. 最后一个结点的存储位置为空(NULL);#ifndef __LINKLLIST_H__
#define __LINKLLIST_H__#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLF -1
#define OVERFLOW -2#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10typedef int Status;typedef int ElemType;typedef struct LNode{ElemType data;struct LNode *next;
}LNode, *LinkList;#endif
#inclu...
//广义表的头尾链表存储表示
//杨鑫
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <string.h>
#define MAXSTRLEN 40 )
typedef char SString[MAXSTRLEN+1];
typedef char AtomType; // 定义原子类型为字符型
typedef enum{ATOM, LIST // ATOM==0:原子 LIST==1:子表
} ElemTag; typedef struct GLNode
{ElemTag tag; // 公共部...
//链式队列的存储
//杨鑫
#include <stdio.h>
#include <stdlib.h>
typedef int QElemType;//定义节点
typedef struct QNode
{QElemType data;struct QNode *next;
}QNode, *QueuePtr;//定义指针
typedef struct
{QueuePtr front;QueuePtr rear;
}LinkQueue;//插入元素e进入队列
void en_Queue(LinkQueue *q, QElemType e)
{QueuePtr temp = (QueuePtr)malloc(sizeof(QNode));if(temp){temp->data = e;temp->next = NULL;q->rear->...
//线索二叉树,这里在二叉树的基础上添加了线索化
//杨鑫
#include <stdio.h>
#include <stdlib.h>
typedef char ElemType;
typedef enum {Link,Thread} childTag; //Link表示结点,Thread表示线索
typedef struct bitNode
{ElemType data;struct bitNode *lchild, *rchild;int ltag, rtag;
} bitNode, *bitTree;bitTree pre; //创建全局变量,表示刚刚访问过的结点/*
创建二叉树,其输入必须按照前序遍历的次序。
T...
编译器:/******************************project :数据结构*function :循环链表之俄罗斯赌盘*Author :Rookie Uzz******************************copyright:2019.2.27 by UZT****************************/ 1 #include <stdio.h>2 #include <stdlib.h>3 #include "CListTest.h" 4 #include <time.h>5#define MAX_NUM 1000 //最大容量 6 7int Bet();8 9int main()
10{
11 Bet();
12return0;
13}
1415int Bet()
16{
1...
//稀疏矩阵三元组顺序表存储表示
//杨鑫
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef int ElemType;
typedef struct
{int i,j; // 行下标,列下标 ElemType e; // 非零元素值
}Triple;typedef struct
{Triple data[MAXSIZE+1]; // 非零元三元组表,data[0]未用 int mu,nu,tu; // 矩阵的行数、列数和非零元个数
}TSMatrix;// 创建稀疏矩阵M
int CreateSMatrix(TSMatrix *M)
{int i,m,n;ElemType ...
C语言是一门永不过时的编程开发语言,到处都离不开它,学好这门编程语言,用处极大。但是如何学好学精它,却让人很头疼,在学习过程中总会遇到各种各样的疑难杂症。
收集整理了一些C语言编程学习必备的资料,涵盖:C语言学习路线图,编程工具,编程思维,指针,函数,数组,文件,标准库,常见问题解惑,数据结构,常用算法,算法分析,接口实现,单片机开发,程序实例,名题范例,面试宝典等等。认真看完这些,估计都能成为大神。...
查找,插入,删除的时间复杂度能一样不?回复内容:
CPython的dict就是用纯C实现的嗯:cpython/dict-common.h at master · python/cpython · GitHubcpython/dictobject.c at master · python/cpython · GitHubPython就是用c实现的,你说可以不可以?另外,c实现的这种哈希表+链表的二维数据结构,其实也有实例:memcached中的缓存就是同一种数据结构。只不过,在python里面,链表用于维持有序性(foreach/push/pop的时候用到),而...
设计并验证以下算法:若矩阵采用三元组顺序表表示,设计并验证找出矩阵所有马鞍点的算法。直接上代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>#define MAX 500
#define M 100
#define N 100typedef int arr_type;//储存行 列 值
typedef struct {int row;//从1 开始 int col;//从1 开始 arr_type value;
}array;//储存三元组顺序表+总行数,总列数,总非零元素个数
typedef struct {array arr[MAX];//从0...