算法与数据结构
yychenxie21
这个作者很懒,什么都没留下…
展开
-
数据结构中排序算法-插入排序(1)
1,插入排序,包括直接插入排序,折半插入排序,希尔排序。 (1),直接插入排序代码 #include "stdafx.h"#includeusing namespace std;#define MAXSIZE 30struct SqList{ int list[MAXSIZE+1]; int length;};void insertSort(S原创 2015-08-29 15:46:31 · 1678 阅读 · 0 评论 -
C++学习(一)-虚析构函数(2)
1,当派生类对象撤销时,一般先掉用派生类的析构函数,再调用基类的析构函数。 #include "stdafx.h"#include "iostream"using namespace std;class Base{ public: ~Base() { cout<<"调用的是基类的析构函数"<<endl; //cout<<a<<" "<<b<<"原创 2015-09-30 17:03:25 · 392 阅读 · 0 评论 -
找出字符串中第一个只出现一次的字符
1,找出字符串中第一个只出现一次的字符。代码如下:#include"StdAfx.h"#include#include#include#define MAXSIZE 100bool FindChar(char* pInputString, char* pChar){ int i,j; int len; int flag; len=strlen(pInputString原创 2015-09-21 15:22:06 · 498 阅读 · 0 评论 -
顺序表的插入,删除算法
1,顺序表的插入算法: 算法描述:在一个顺序表的第i个元素前插入元素e,并打印新的顺序表中的元素#include#include #define SIZE 100#define INCREMENT_SIZE 10typedef struct { int *elem; int length; int listsize;}SqList;bool initSqList(原创 2015-10-11 12:37:05 · 10107 阅读 · 1 评论 -
单链表的逆置
1,算法描述:实现带头结点的单链表的逆置。 代码如下: #include#include typedef struct LNode{ int data; LNode *next;}LNode,*LinkList;//creat a LinkListbool creatLinklist(LinkList&L,int n){ LinkList p,原创 2015-10-11 17:10:24 · 1832 阅读 · 0 评论 -
遍历一次单链表,找出单链表中间的值
1,算法描述:给定一个单链表,但不知该表的大小,现要求只遍历一次,找出位于单链表中间的值。 基本思想:设置两个指针p,q,初始时,分别指向头结点,循环使p后移两位,q后移一位,当单链表遍历完毕时,q的位置就是中间位置。注意:当单链表长度为偶数时,在最后一次循环前,p已在最后一个结点上,此时p=p->next->next,是错误的,因为p->next 都不存在,怎么判断p->next原创 2015-10-11 18:34:57 · 7743 阅读 · 0 评论 -
在一个无头指针的单链表中,删除指针p所指向的结点
1,算法描述:在无头单链表中,删除指针p所指向的结点 注意:是没有头结点的。 算法思想:我们无法得到p所指结点的前驱,但是其后继是知道的,当前结点和后继结点的区别是data的不同,我们可以将p所指向结点的后继的值赋给p所指向的结点,将p所指向结点的后继删除,将该后继的后继地址赋给p的next。即 q=p->next; p->data=q->d原创 2015-10-11 19:58:14 · 8427 阅读 · 0 评论 -
循环单链表的建立算法
1,循环单链表的建立:其和线性链表的操作基本一致,区别在于循环条件不是p->next是否存在,而是p->next是否等于头结点。 代码如下: #include "stdafx.h"#include#include #define SIZE 100#define INCREMENT_SIZE 10typedef struct LNode{ int dat原创 2015-10-12 09:53:10 · 1288 阅读 · 0 评论 -
统计字符串中大写字母的个数
#include "stdio.h"#include "malloc.h"int numberofUpper(char*ch){ char*p; int count=0; p=ch; if(p==NULL) return 0; while(*p!='\0') { while(*p>='0'&&*p<='9') { count++; } p+原创 2015-09-24 18:31:57 · 3411 阅读 · 0 评论 -
二叉树的重建,遍历,求深度算法
1,代码如下:#include "stdafx.h"#include#include#define STACK_INCREMENT 10#define STACK_INIT_SIZE 100#define MAXSIZE 50//char*ch="ABC D EFH I G ";//char*ch="AB CD E ";char*ch="-+a原创 2015-09-14 18:44:08 · 658 阅读 · 0 评论 -
数据结构中排序算法- 二叉树排序(7)
1,二叉树排序算法 基本思想:时间复杂度:空间复杂度:原创 2015-09-02 17:36:02 · 8607 阅读 · 0 评论 -
数据结构中的查找算法-哈希表(3)
1,哈希表:2,哈希函数的构造方法:3,哈希表的查找及分析:原创 2015-09-06 17:50:01 · 697 阅读 · 0 评论 -
数据结构中排序算法-交换排序(2)
1,冒泡排序 基本思想:每趟排序从待排关键字记录中的第一个关键字记录与第二个关键字记录相比较,若第一个关键字大于第二个关键字,则将两者交换,再次比较第二个关键字和第三个关键字,若为逆序,则两者交换,依次类推,直至第n-1个关键字和第n个关键字比较为止。每趟排序都将一个待排关键字的位置固定,整个排序过程将进行K(1时间复杂度最差和平均复杂度为O(n^2),最好的时间复杂度为O(n)。空间复杂原创 2015-08-30 16:48:51 · 617 阅读 · 0 评论 -
数据结构中排序算法- 图书馆排序(6)
1,图书馆排序算法 基本思想:时间复杂度:空间复杂度:原创 2015-09-02 17:33:13 · 1096 阅读 · 0 评论 -
数据结构中排序算法-选择排序(3)
1,简单选择排序基本思想:每一趟在n-i+1个记录中选取关键字最小的的记录作为有序序列中的第i个记录。 代码如下:void selectSort(SqList &L){ int i,j; int min; int temp; int minV; for (i=0;i<L.length;i++) { min=i; minV=L.l原创 2015-08-30 18:17:05 · 731 阅读 · 0 评论 -
将两个有序表合并成一个非递减的有序表算法
1,存储结构:顺序存储结构。2,代码如下:#include "stdafx.h"#include#define MAXSIZE 40struct SqList{ int list[MAXSIZE+1]; int length;};void merge(SqList&L,SqList D,SqList R){ int i,j,k; L.length=0; k=0,i=原创 2015-09-04 17:22:06 · 4584 阅读 · 2 评论 -
数据结构中排序算法-归并排序(4)
1,归并排序基本思想:时间复杂度:O(nlogn)。空间复杂度为O(n)。是稳定的排序算法。这是和同量级的快速排序和堆排序最大的不同点。原创 2015-08-31 20:29:27 · 372 阅读 · 0 评论 -
数据结构中的查找算法-动态查找表(2)
1,二叉排序树:2,平衡二叉树:3,B-和B+树:原创 2015-09-06 17:46:15 · 3225 阅读 · 0 评论 -
数据结构中的查找算法-静态查找表(1)
1,顺讯查找:2,折半查找:3,分块查找:原创 2015-08-30 12:56:32 · 774 阅读 · 0 评论 -
返回两个字符中的最长公共子串
1,输入:abncdeixox dixcdeixobxg 输出:cdeixo 代码如下: #include "stdafx.h"#include#include#include#define MAXSIZE 100int SearchStr(char * pFirstStr, const char * pSecondStr){ i原创 2015-09-28 10:46:48 · 483 阅读 · 0 评论 -
单链表的插入与删除算法
的原创 2015-10-11 12:41:08 · 12443 阅读 · 1 评论