
数据结构
太想吃螺蛳粉了我
这个作者很懒,什么都没留下…
展开
-
排序
声明#include<stdio.h>#define EQ(a, b) ((a) == (b))#define LT(a, b) ((a) < (b))#define LQ(a, b) ((a) <= (b))#define MAXSIZE 20typedef int KeyType;typedef char InfoType;typedef struct{ KeyType key; //关键字项 InfoType otherinfo; //其他数据项}R原创 2020-12-17 20:57:55 · 116 阅读 · 0 评论 -
查找
声明#include<stdio.h>#include<stdlib.h>#include<string.h>#define LIST_INIT_SIZE 100typedef int ElemType;typedef struct{ ElemType *elem; int length;}SSTable;typedef int TElemType;//二叉树 typedef struct BiTNode{ TElemType data;原创 2020-12-17 20:51:48 · 197 阅读 · 1 评论 -
图的基本操作
定义/*课本第168页的图7.13(a)的图*/#include<stdio.h>#include<stdlib.h>#include<climits>#define MAX_VERTEX_NUM 20//最大顶点个数#define MAXQSIZE 100bool visited[MAX_VERTEX_NUM];typedef char InfoType;typedef enum {DG, DNG, UDG, UDN}GraphKind; //d原创 2020-12-01 22:59:57 · 502 阅读 · 0 评论 -
二叉树的基本操作
定义声明#include<stdio.h>#include<stdlib.h>typedef char TElemType;typedef struct BiTNode{ TElemType data; struct BiTNode *lchild, *rchild;//左右孩子指针 }BiTNode, *BiTree; bool InitBiTree(BiTree &T);//初始化二叉树bool CreateBiTree(BiTree &原创 2020-11-18 21:03:05 · 692 阅读 · 2 评论 -
串的模式匹配算法(定长顺序存储)
#include<stdio.h>#include<stdlib.h>#include<string.h>#define MAXSTRLEN 255typedef unsigned char HString[MAXSTRLEN + 1];//0号单元存放串的长度 ???bool StrAssign (HString S, char *chars);int Index(HString S, HString T, int pos);int Index_KMP(H原创 2020-11-06 00:11:36 · 641 阅读 · 0 评论 -
串的堆分配
#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct{char *ch;int length;}HString;bool InitString(HString &S);bool StrAssign(HString &T, char *chars);//生成一个其值等于串常量chars的串Tbool StrEmpty(HString S);int StrL原创 2020-11-06 00:09:59 · 1267 阅读 · 0 评论 -
将循环链表h2链接到循环链表h1之后仍保持循环链表形式
注意:循环链表的基本操作与单链表的不同Link_L1L2函数中应该令p1->next = p2, 如果令p1->next = L2,结果会输出L2->data 错误如图所示:#include<stdio.h>#include<stdlib.h>typedef struct DuLNode{ int data; struct DuLNode *prior; struct DuLNode *next;}DuLNode, *DuLinkL原创 2020-10-11 20:01:50 · 240 阅读 · 0 评论 -
循环链表的基本操作
定义:typedef struct DuLNode{ int data; struct DuLNode *prior; struct DuLNode *next;}DuLNode, *DuLinkList;构造循环链表与单链表不同的是L->next = L;而不是L->next = NULL;bool InitDuList(DuLinkList &L) { L = (DuLinkList)malloc(sizeof(DuLNode)); if(L == NULL原创 2020-10-11 17:16:13 · 346 阅读 · 0 评论 -
单链表的基本操作
#include<stdio.h>#include<stdlib.h>定义typedef struct LNode{ int data; struct LNode *next;}LNode, *LinkList;bool InitList(LinkList &L)bool InitList(LinkList &L){ L = (LinkList)malloc(sizeof(LNode)); if(L == NULL)return false;原创 2020-10-10 22:16:48 · 264 阅读 · 0 评论 -
顺序表的基本操作
#include<stdio.h>#include<stdlib.h>#define LIST_INIT_SIZE 100#define LISTINCREMENT 20定义typedef struct{ int *elem; int length; int listsize;}SqList;bool InitList(SqList &L)bool InitList(SqList &L){ L.elem =(int*)malloc(LIS原创 2020-10-10 20:16:41 · 129 阅读 · 0 评论 -
在表中查找数组为x的元素
线性表(a1,a2,a3……an)中的元素递增有序且按顺序存储于计算机中,设计一算法,在表中查找数组为x的元素,若找到则将其与后继元素位置交换,找不到则插入x并依然递增有序思路:为了加快查找速度,这里采用折半查找法#include<stdio.h>#include<stdlib.h>#define LIST_INIT_SIZE 100#define LISTINCREMENT 20typedef struct{ int *elem; int length; in原创 2020-10-03 18:37:51 · 963 阅读 · 0 评论 -
将两个有序顺序表合并为一个新的有序顺序表MergeList_Sq
将两个有序顺序表合并为一个新的有序顺序表,输出合并后的顺序表的所有数据元素;#include<stdio.h>#include<stdlib.h>#define LIST_INIT_SIZE 100#define LISTINCREMENT 20typedef struct{ int *elem; int length; int listsize;}SqList;bool InitList_Sq(SqList &L);void PrintElem_原创 2020-10-03 18:36:01 · 5086 阅读 · 0 评论 -
找出数组中未出现的最小正整数
给定一个含n(n≥1)个整数的数组,请设计一个在时间上尽可能高效的算法,找出数组中未出现的最小正整数。例如,数组{-5,3,2,3}中未出现的最小正整数是1;数组{1,2,3}中未出现的最小正整数是4。思路:设置一个Lb作为标志顺序表,遍历La,如果La中出现一个正整数,则令Lb.elem[La.elem[i]] = 1,证明La中曾经出现过这个正整数#include<stdio.h>#include<stdlib.h>#define LISTINITSIZE 10ty原创 2020-10-03 18:33:30 · 3341 阅读 · 0 评论