数据结构
帅帅气气的黑猫警长
这位黑猫警长很懒……
展开
-
数据结构--直接插入排序
//Author: Hao#include<iostream>using namespace std;void insertsort(int a[],int length) //直接插入排序 { int i,j; for(i=2;i<=length;i++) { if(a[i]<a[i-1]) { a[0]=a[i]; //哨兵 for(j=i-1;a[0]<a[j];j--) a[j+1]=a[j]; //记录后.原创 2020-11-07 22:47:13 · 135 阅读 · 0 评论 -
栈的经典应用—括号匹配问题
括号匹配问题算是栈应用中比较经典的问题了。给定一个只包括(,),{,},[,]的字符串,判断字符串是否有效。有效字符串需满足:1、左括号必须用相同类型的右括号闭合。2、左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。顺序栈核心代码和算法typedef struct { //顺序栈结构体 char data[MAXSIZE]; int top;}sqstack;void inits..原创 2020-08-19 11:13:16 · 273 阅读 · 0 评论 -
循环链表—循环双链表/循环单链表
循环单/双链表,创建、初始化、尾插、头插、遍历、插入、删除、判空部分函数采用重载(此处为c++代码)#include <iostream>#include <stdlib.h>#include <stdbool.h>using namespace std;typedef struct lnode{ //单链表结构体 int data; struct lnode *next;}lnode,*linklist;typedef原创 2020-08-16 12:36:03 · 244 阅读 · 0 评论 -
双向链表—全部操作
初始化,尾插(头插类似,相当于前一位的尾插),遍历,插入,删除,判空#include <iostream>#include <stdlib.h>using namespace std;typedef struct dnode{ //定义数据类型 int data; struct dnode *prior,*next; //双向链表有两个指针!}dnode,*dlinklist;bool initdlinklist(dlinkli原创 2020-08-16 12:34:08 · 137 阅读 · 0 评论 -
单链表—全部操作
初始化、头插、尾插、求长度、遍历、插入、删除、按值查找、按位查找#include <iostream>#include <stdlib.h>using namespace std;typedef struct lnode{ int data; struct lnode *next;}lnode,*linklist;bool initlist(linklist &l) //初始化{ l=(lnode *)malloc(siz原创 2020-08-16 12:32:55 · 158 阅读 · 0 评论 -
单链表— 尾插/头插
带头节点尾插/头插#include <iostream>#include <stdlib.h>using namespace std;typedef struct lnode{ int data; struct lnode *next;}lnode,*linklist;bool initlist(linklist &l) //初始化链表{ l=(lnode *)malloc(sizeof(lnode)); if(l=原创 2020-08-16 12:31:32 · 127 阅读 · 0 评论 -
单链表—不带头节点插入操作
无头节点,注意是P=L,不是P=L->next#include <iostream>#include <stdlib.h>#define TRUE 1#define FALSE 0using namespace std;typedef struct lnode{ int data; struct lnode *next; }lnode,*linklist;bool initlist(linklist &l) //原创 2020-08-16 12:30:19 · 1443 阅读 · 0 评论 -
单链表—带头指针插入操作
在单链表中的第i个位置上插入制定元素e#include <iostream>#include<stdlib.h>#define TRUE 1#define FALSE 0using namespace std;typedef struct lnode{ int data; struct lnode *next;}lnode,*linklist;bool initlist(linklist &l) //初始化单链表(带头指针){原创 2020-08-16 12:29:04 · 713 阅读 · 0 评论 -
顺序表—位/值查找
按值查找是在顺序表L中查找第一个元素等于e的元素,并返回其位序。时间复杂度O(n)。按位查找是在顺序表中查找位序为i的元素,并返回e。时间复杂度O(1)。#include <iostream>#include<stdlib.h>#define initsize 10using namespace std;typedef struct{ int *data; int length; int maxsize;}sqlist;void initl原创 2020-08-16 12:27:42 · 1288 阅读 · 0 评论 -
顺序表—静态分配
静态分配,数组大小和空间已经固定,一旦占满,再插入就会产生溢出。#include <iostream>using namespace std;#define max 10typedef struct{ int data[max]; int length;}sqlist;void initlist(sqlist &l){ for(int i=0;i<max;i++) l.data[i]=1; l.length=0;}v原创 2020-08-16 12:26:19 · 199 阅读 · 0 评论 -
顺序表—插入删除
插入操作—在顺序表L的第i(1<=i<=L.length+1)个位置插入新元素e。时间复杂的为O(n)。删除操作—删除顺序表L的第i(1<=I<=l.length)个位置的元素,并返回true。时间复杂度为O(n)。#include <iostream>#include<stdlib.h>#define initsize 10using namespace std;typedef struct{ int *data; int l原创 2020-08-16 12:24:56 · 287 阅读 · 0 评论 -
顺序表—动态分配
存储空间是程序执行过程中通过动态存储语句分配的,一旦空间占满,就另外开辟一块更大的存储空间,用以替换原来的存储空间。c语言调用stdlib库,使用malloc,free函数。c++使用new,delect。#include<stdlib.h>#include <iostream>#define initsize 10using namespace std;typedef struct{ int *data; int maxsize; int le原创 2020-08-16 12:22:04 · 1410 阅读 · 0 评论 -
c++简单队列数据结构
队列是一种线性存储结构。特点:先进先出,队尾插入队:push,插入队尾出队:pop,删除队首判断队空:队首=队尾c++直接调用queue库基本操作:q.empty() 如果队列为空返回true,否则返回falseq.size() 返回队列中元素的个数q.pop() 删除队列首元...原创 2019-07-19 15:19:21 · 426 阅读 · 0 评论