自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 8:2哈希表

键值对构建表创建表查找二、全部代码三、小结哈希表时间复杂度:O(n)

2022-06-07 13:56:00 47 1

原创 8:1顺序查找与二分查找

键值对构建表创建表顺序查找二分查找二、全部代码三、小结顺序查找的时间复杂度为O(n) 二分查找的时间复杂度为O(log(n))

2022-06-07 13:51:07 48

原创 7:3Prim 算法与 Dijkstra 算法

网的构建创造一个范例网初始化网生成树的Prim算法,或最近路径的Dijkstra算法二、全部代码三、小结都是使用贪心算法和线性规划,每一步都是选择权值/花费最小的边。 贪心算法:一个局部最有解也是全局最优解; 线性规划:主问题包含n个子问题,而且其中有重叠的子问题。Dijkstra算法通过线性规划缓存了最优子路径的解,每一步也通过贪心算法来选择最小的边。 Prim算法通过贪心算法来选择最小的边,而Prim的每个子树都是最小生成树说明满足线性规划的两个条件。

2022-06-01 21:28:45 165

原创 7:2邻接表及广度优先遍历

一、代码块图的构建typedef struct Graph{ int** connections; int numNodes; } *GraphPtr;图的初始化GraphPtr initGraph(int paraSize, int** paraData){ int i, j; GraphPtr resultPtr = (GraphPtr) malloc (sizeof(struct Graph)); resultPtr -

2022-05-31 16:31:34 64

原创 7:1图的遍历

一、代码块构建队列typedef struct GraphNodeQueue{ int* nodes; int front; int rear; }GraphNodeQueue, *QueuePtr;初始化循环队列QueuePtr initQueue(){ QueuePtr resultQueuePtr = (QueuePtr) malloc (sizeof(struct GraphNodeQueue)); resul

2022-05-31 13:15:29 53

原创 6:3N后问题

一、代码块回溯算法void backtracking(int* paraSolution, int paraN, int paraT){ int i; if(paraT > paraN){ for(i = 1; i <= paraN; i++){ printf("%d ", paraSolution[i]); } printf("\r\n"); }else{ for(i =

2022-05-26 20:46:43 31

原创 6:2哈夫曼树问题

一、代码块读入数据Status ReadData(char *source){ //打开文件读入数据 ifstream infile; infile.open("in.txt"); cout<<"Reading..."<<endl; cout<<"the input file is:"<<endl; infile.getline(source,MaxSize); cout<<sour

2022-05-26 20:31:05 114

原创 6:1二叉树的构建与遍历

一、代码块构造树结点typedef struct BTNode{ char element; BTNode* left; BTNode* right; }BTNode, *BTNodePtr;构造队列typedef struct BTNodePtrQueue{ BTNodePtr* nodePtrs; int front; int rear; }BTNodePtrQueue, *QueuePtr;

2022-05-23 20:40:27 228

原创 5:2压缩矩阵的转置

一、代码块构造压缩矩阵typedef struct Triple{ //i代表矩阵行数,j代表矩阵列数,e代表储存的值 int i; int j; elem e; } Triple, *TriplePtr;//构造压缩矩阵typedef struct CompressedMatrix{ int rows,columns,numElements; Triple* elements; } Compressed

2022-05-19 10:27:16 96

原创 5:1二维数组与矩阵乘法

一、代码块构造动态二维数组typedef struct TwoDArray{ int rows; int columns; int** elements; } TwoDArray, *TwoDArrayPtr;构造静态二维数组typedef struct TwoDStaticArray{ int rows; int columns; int elements[ROWS][COLUMNS]; } Two

2022-05-19 10:12:08 86

原创 3:4循环队列

typedef struct CircleIntQueue{ int data[TOTAL_SPACE]; int head; int tail; }*CircleIntQueuePtr;初始化队列CircleIntQueuePtr initQueue(){ CircleIntQueuePtr resultPtr = (CircleIntQueuePtr)malloc(sizeof(CircleIntQu

2022-05-16 17:12:04 146

原创 3:3链队列

一、代码块队列结点typedef struct LinkNode{ int data; LinkNode* next; }*LinkNodePtr;链队列typedef struct LinkQueue{ LinkNodePtr front; LinkNodePtr rear; }*LinkQueuePtr;初始化链队列和结点LinkQueuePtr initQueue(){ LinkQ

2022-05-16 16:49:19 98 1

原创 3:2栈(累加的递归实现,hanoi)

一、代码块累加递归详情int addTo(int paraN){ int tempSum; printf("entering addTo(%d)\r\n", paraN); //递归结尾 if(paraN <= 0){ printf(" return 0\r\n"); return 0; } //开启下一个相加函数 else{ tempSum = addTo(paraN - 1) + pa

2022-05-12 09:53:06 94

原创 3:1栈的应用(括号匹配、表达式求值)

一、代码块定义栈的结构体typedef struct CharStack{ int top; //设置栈容量 int data[STACK_MAX_SIZE];} *CharStackPtr;打印栈中元素void outputStack(CharStackPtr paraStack){ for (int i = 0; i <= paraStack->top; i++){ printf("%c ", paraStack->

2022-05-10 13:16:50 101

原创 2:5多项式的加法

一、代码块创建链表typedef struct LinkNode{ int coefficient; int exponent; struct LinkNode *next;} *LinkList, *NodePtr;创建头结点LinkList initLinkList(){ LinkList tempHeader = (LinkList)malloc(sizeof(struct LinkNode)); tempHeader->coeffi

2022-05-04 21:44:34 75 1

原创 2:4静态链表

一、代码块静态链表构成typedef struct StaticLinkedNode{ //next是一个整数,表示相对地址,在操作系统中,应该是绝对地址。这里用-1表示NULL char data; int next;} *NodePtr;typedef struct StaticLinkedList{ //nodes存储节点,used存储空间使用情况,0表示空闲,1表示被占用 NodePtr nodes; int* used;} *Lis

2022-05-03 12:18:54 417 1

原创 2:3双链表

一、代码块双链表结构typedef struct DoubleLinkedNode{ char data; struct DoubleLinkedNode *previous; struct DoubleLinkedNode *next;} DLNode, *DLNodePtr;创建表头DLNodePtr initLinkList(){ DLNodePtr tempHeader = (DLNodePtr)malloc(sizeof(struct Doub

2022-05-02 17:30:03 191 1

原创 2:2单链表

一、代码块创建线性表结构typedef struct LinkNode{ char data; struct LinkNode *next;} LNode, *LinkList, *NodePtr;创建头节点LinkList initLinkList(){ NodePtr tempHeader = (NodePtr)malloc(sizeof(LNode)); tempHeader->data = '\0'; tempHeader->

2022-04-27 23:52:36 807 1

原创 2:1顺序表

构造线性表typedef struct SequentialList{ int actualLength;//线性表实际长度 int data[LIST_MAX_LENGTH];} *SequentialListPtr;打印线性表void outputList(SequentialListPtr paraList){ for(int i = 0;i < paraList->actualLength;i++){ printf("%d ",

2022-04-25 22:31:41 311

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除