数据结构
理工科的杜小甫
这个作者很懒,什么都没留下…
展开
-
希尔排序(ShellSort程序完整版)
#include<stdlib.h>#include<stdio.h>void ShellSort(int *data,int left,int right){ int len = right - left + 1; int i; int d = len; while(d > 1) { d = (d + 1)/2; for原创 2016-06-30 17:36:31 · 945 阅读 · 0 评论 -
栈的动态顺序存储表示
采用动态一维数组来存储栈。所谓动态,指的是栈的大小可以根据需要增加。 ◆ 用bottom表示栈底指针,栈底固定不变的;栈顶则随着进栈和退栈操作而变化。用top(称为栈顶指针)指示当前栈顶位置。 ◆ 用top=bottom作为栈空的标记,每次top指向栈顶数组中的下一个存储位置。 ◆ 结点进栈:首先将数据元素保存到栈顶(top所指的当前位置),然后执行top加1,使top指向栈顶的下一个存储位置原创 2016-06-23 17:30:48 · 2376 阅读 · 0 评论 -
栈的静态顺序存储表示
采用静态一维数组来存储栈。 栈底固定不变的,而栈顶则随着进栈和退栈操作变化的, ◆ 栈底固定不变的;栈顶则随着进栈和退栈操作而变化,用一个整型变量top(称为栈顶指针)来指示当前栈顶位置。 ◆ 用top=0表示栈空的初始状态,每次top指向栈顶在数组中的存储位置。 ◆ 结点进栈:首先执行top加1,使top指向新的栈顶位置,然后将数据元素保存到栈顶(top所指的当前位置)。 ◆原创 2016-06-23 17:16:51 · 1043 阅读 · 0 评论 -
栈的应用之数制转换
十进制整数N向其它进制数d(二、八、十六)的转换是计算机实现计算的基本问题。转换法则:该转换法则对应于一个简单算法原理: n=(n div d)*d+n mod d 其中:div为整除运算,mod为求余运算 例如 (1348)10= (2504)8,其运算过程如下: n n div 8 n mod 8 1348原创 2016-06-23 17:09:20 · 1221 阅读 · 0 评论 -
约瑟夫环(c语言程序完整版)
约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct Node{原创 2016-06-23 12:16:49 · 49787 阅读 · 5 评论 -
线性表(顺序表)的逆置(完整程序)
#include<stdio.h>#include<stdlib.h>#define OK 1#define ERROR -1#define MAX_SIZE 100typedef int Status;typedef int ElemType;typedef struct sqlist{ ElemType Elem_array[MAX_SIZE]; int length;原创 2016-06-22 15:31:40 · 13969 阅读 · 0 评论 -
线性表的删除及查找定位删除(完整程序)
#include<stdio.h>#include<stdlib.h>#define OK 1#define ERROR -1#define MAX_SIZE 100typedef int Status;typedef int ElemType;typedef struct sqlist{ ElemType Elem_array[MAX_SIZE]; int length;原创 2016-06-22 15:06:18 · 1335 阅读 · 0 评论 -
线性表的插入和创建(完整程序)
#include<stdio.h>#include<stdlib.h>#define OK 1#define ERROR -1#define MAX_SIZE 100typedef int Status;typedef int ElemType;typedef struct sqlist{ ElemType Elem_array[MAX_SIZE]; int length;原创 2016-06-22 12:25:32 · 2146 阅读 · 0 评论 -
线性表的基本操作
借助数组来描述顺序表。除了用数组来存储线性表的元素之外,顺序表还应该有表示线性表的长度属性,所以用结构类型来定义顺序表类型。#define OK 1#define ERROR -1#define MAX_SIZE 100typedef int Status ;typedef int ElemType ; typedef struct sqlist{ Ele原创 2016-06-21 16:42:13 · 546 阅读 · 0 评论 -
空间复杂度
空间复杂度(Space complexity) :是指算法编写成程序后,在计算机中运行时所需存储空间大小的度量。记作: S(n)=O(f(n)) 其中: n为问题的规模(或大小) 该存储空间一般包括三个方面: 指令常数变量所占用的存储空间; 输入数据所占用的存储空间; 辅助(存储)空间。 一般地,算法的空间复杂度指的是辅助空间。 一维数组a[n]: 空间复原创 2016-06-21 16:17:51 · 1384 阅读 · 0 评论 -
素数的判断 (完整版程序)
#include<stdio.h>#include<math.h>void prime(int n){ int i = 2; while((n%i)!=0&&i*1.0<sqrt(n)) i++; if(i*1.0>sqrt(n)) { printf("%d是一个素数\n",n); } else pri原创 2016-06-21 16:14:51 · 4523 阅读 · 0 评论 -
单链表插入(完整版程序 在表头和表尾插入算法)
#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<string.h>#define N 3typedef struct node{ char name[20]; struct node *next;}ListNode;ListNode *creat(int n){ ListNode *p原创 2016-06-21 15:36:16 · 3645 阅读 · 0 评论 -
单链表的插入(完整版程序c语言实现,以字符串为数据)
这里的插入主要是针对有序表中插入一个数据,插入后仍然为一个有序表。接下来会给出在链表尾插入,和在链表投插入怎么做#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<string.h>#define N 3typedef struct node{ char name[20]; struct node *原创 2016-06-21 14:23:39 · 6509 阅读 · 1 评论 -
单链表的查找(完整程序 以字符串为数据)
#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<string.h>#define N 3typedef struct node{ char name[20]; struct node *next;}stud;stud *creat(int n){ stud *p,*h,*s;原创 2016-06-20 17:28:11 · 4941 阅读 · 0 评论 -
单链表的逆置(完整程序加思路分析)
#include<stdio.h>#include<stdlib.h>#include<malloc.h>#define N 3typedef struct node{ char name[20]; struct node *next;}stud;stud *creat(int n){ stud *p,*h,*s; int i; if((h=(s原创 2016-06-20 16:44:39 · 1979 阅读 · 2 评论 -
什么是hashtable,如何解决hash冲突
哈希函数:在记录的关键字与记录的存储地址之间建立的一种对应关系叫哈希函数。 哈希函数是一种映象,是从关键字空间到存储地址空间的一种映象。可写成:addr(ai)=H(ki) ,其中i是表中一个元素,addr(ai)是ai的地址, ki是ai的关键字。 哈希表:应用哈希函数,由记录的关键字确定记录在表中的地址,并将记录放入此地址,这样构成的表叫哈希表。 哈希查找(又叫原创 2016-07-05 20:36:54 · 3695 阅读 · 0 评论 -
栈的链式存储表示
1 栈的链式表示 栈的链式存储结构称为链栈,是运算受限的单链表。其插入和删除操作只能在表头位置上进行。因此,链栈没有必要像单链表那样附加头结点,栈顶指针top就是链表的头指针。图3-4是栈的链式存储表示形式。链栈的结点类型说明如下:typedef struct Stack_Node{ ElemType data ;struct Stack_Node *next ;}原创 2016-06-23 17:34:16 · 735 阅读 · 0 评论