数据结构学习
pengshupan
计算机图形学,C++菜鸟
展开
-
链表
对于数据结构问题,首先来谈谈关于链表的问题,这个问题困扰的我很久,其实也没那么难。关于链表的操作无非就是增删改,理解链表关键是关于指针节点的操作,1.动态分配内存定义链表节点,拿数字为例子typedef Node{ int data; Node* next;}Node* p=(Node*)malloc(sizeof(Node));原创 2016-02-28 09:19:44 · 390 阅读 · 0 评论 -
插入排序
#include int array[10]={160,96,48,47,76,57,54,36,24,91};void Insert(int arr[],int n){ int temp=0,j=0; for(int i=1;i<n;i++) { temp=arr[i]; for(j=i-1;j>=0&&temp<arr[j];j--) { arr[j+1]=arr原创 2016-04-19 15:31:25 · 240 阅读 · 0 评论 -
冒泡排序
#include int array[10]={34,44,1,32,44,78,3,37,8,90};void maopao(int arr[],int n){int t=0;for(int i=0;i{for(int j=n-1;j>=0;j--){if(arr[j-1]>arr[j]){t=arr[j-1];arr[j-1]=arr[j];原创 2016-04-19 15:27:35 · 206 阅读 · 0 评论 -
约瑟夫环链表解决算法
1.起源 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从一原创 2016-04-14 16:33:26 · 1498 阅读 · 0 评论 -
求取迷宫所有路径
int maze[9][9]={{2, 2, 2, 2, 2, 2, 2, 2, 2},{2, 0, 0, 0, 0, 0, 0, 0, 2},{2, 0, 2, 2, 0, 2, 2, 0, 2},{2, 0, 2, 0, 0, 2, 0, 0, 2},{2, 0, 2, 0, 2, 0, 2, 0, 2},{2, 0, 0, 0, 2, 0, 2, 0, 2},{2, 2, 0,原创 2016-04-13 15:50:14 · 1380 阅读 · 0 评论 -
求最大公约数与最小公倍数
1.求最大公约数就是用辗转相除法即可,反复相除即可int fun1(int a,int b){ int r=0; while(b!=0) { r=a%b; //a与b的大小关系不影响顺序 a=b; b=r; } return a;}2.最小公倍数等于2个数相乘除以最大公约数int fun2(int a,int b){ return (a*b)/fun1(a原创 2016-04-13 15:34:58 · 293 阅读 · 0 评论 -
生命游戏
生命游戏是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。它最初于1970年10月在《科学美国人》杂志中马丁·葛登能(Martin Gardner,1914年11月21日-2010年5月22日。又译:马丁·加德纳)的“数学游戏”专栏出现。#include #include #include int Cell[10][10];int Temp[10][10];void Init原创 2016-04-13 14:25:15 · 547 阅读 · 0 评论 -
八皇后问题
八皇后是一个古老的数据结构问题,在一个8*8的国际象棋棋盘上放置8个皇后,使之不互相攻击,问有多少种解法,这个问题是高斯提出来的,当时高斯算出了76种解法,实际上8皇后有92种解法,借助现在的计算机攻击可以很好的计算出来,通过递归算法可以算出来。#include #include int Queen[8];static int Count=0;//定义一个数组放置皇后,Queen[i]=j原创 2016-04-11 14:39:08 · 393 阅读 · 0 评论 -
二叉排序树的建立与遍历
二叉排序树其实是一种排列方式,现在给定一系列的数,通过建立一个二叉树,然后对二叉树进行中序遍历即可对二叉树从小到大进行排列。二叉树大小节点大小:左节点的数据1.定义二叉树数据结构我们采用int类型的作为节点内容typedef struct node{ int data; //节点数据 struct node* left; //节点左指针原创 2016-03-02 17:30:45 · 1415 阅读 · 1 评论 -
交换排序
#include int array[10]={160,96,48,47,76,57,54,36,24,91};void Exchange(int arr[],int n){ int k=0,temp=0; for(int i=0;i<n;i++) { k=i; for(int j=i+1;j<n;j++) {原创 2016-04-19 15:38:31 · 322 阅读 · 0 评论