
数据结构
帅帅气气的黑猫警长
这位黑猫警长很懒……
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构--直接插入排序
//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 · 216 阅读 · 0 评论 -
栈的经典应用—括号匹配问题
括号匹配问题算是栈应用中比较经典的问题了。 给定一个只包括(,),{,},[,]的字符串,判断字符串是否有效。 有效字符串需满足: 1、左括号必须用相同类型的右括号闭合。 2、左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 顺序栈核心代码和算法 typedef struct { //顺序栈结构体 char data[MAXSIZE]; int top; }sqstack; void inits..原创 2020-08-19 11:13:16 · 357 阅读 · 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 · 312 阅读 · 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 · 204 阅读 · 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 · 203 阅读 · 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 · 204 阅读 · 0 评论 -
单链表—不带头节点插入操作
无头节点,注意是P=L,不是P=L->next #include <iostream> #include <stdlib.h> #define TRUE 1 #define FALSE 0 using namespace std; typedef struct lnode{ int data; struct lnode *next; }lnode,*linklist; bool initlist(linklist &l) //原创 2020-08-16 12:30:19 · 1585 阅读 · 0 评论 -
单链表—带头指针插入操作
在单链表中的第i个位置上插入制定元素e #include <iostream> #include<stdlib.h> #define TRUE 1 #define FALSE 0 using namespace std; typedef struct lnode{ int data; struct lnode *next; }lnode,*linklist; bool initlist(linklist &l) //初始化单链表(带头指针) {原创 2020-08-16 12:29:04 · 821 阅读 · 0 评论 -
顺序表—位/值查找
按值查找是在顺序表L中查找第一个元素等于e的元素,并返回其位序。 时间复杂度O(n)。 按位查找是在顺序表中查找位序为i的元素,并返回e。 时间复杂度O(1)。 #include <iostream> #include<stdlib.h> #define initsize 10 using namespace std; typedef struct{ int *data; int length; int maxsize; }sqlist; void initl原创 2020-08-16 12:27:42 · 1371 阅读 · 0 评论 -
顺序表—静态分配
静态分配,数组大小和空间已经固定,一旦占满,再插入就会产生溢出。 #include <iostream> using namespace std; #define max 10 typedef 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 · 308 阅读 · 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 10 using namespace std; typedef struct{ int *data; int l原创 2020-08-16 12:24:56 · 353 阅读 · 0 评论 -
顺序表—动态分配
存储空间是程序执行过程中通过动态存储语句分配的,一旦空间占满,就另外开辟一块更大的存储空间,用以替换原来的存储空间。 c语言调用stdlib库,使用malloc,free函数。 c++使用new,delect。 #include<stdlib.h> #include <iostream> #define initsize 10 using namespace std; typedef struct{ int *data; int maxsize; int le原创 2020-08-16 12:22:04 · 1530 阅读 · 0 评论 -
c++简单队列数据结构
队列是一种线性存储结构。 特点:先进先出,队尾插 入队:push,插入队尾 出队:pop,删除队首 判断队空:队首=队尾 c++直接调用queue库 基本操作: q.empty() 如果队列为空返回true,否则返回false q.size() 返回队列中元素的个数 q.pop() 删除队列首元...原创 2019-07-19 15:19:21 · 511 阅读 · 0 评论