- 博客(14)
- 收藏
- 关注
原创 C语言实现栈的顺序存储表示和实现
2021.08.161、记录自己学习数据结构中对于栈的顺序存储的实现,实现了对于栈的顺序存储的增删改查2、其中最难的是插入和删除因为该操作都涉及到了top指针的移动,插入函数Push代码片段+详解:Status Push(SqStack& S, SElemType e) { if (S.top - S.base >= S.stacksize) { SElemType* newplace = (SElemType*)realloc(S.base, (STACKINCREMENT
2021-08-16 16:36:05
435
1
原创 力扣21. 合并两个有序链表
2021.08.15记录自己的力扣刷题之旅文章目录前言一、题目:合并两个有序链表二、C语言解决方案1.题目分析2.C语言代码实现三、代码实现截图展示总结前言一、题目:合并两个有序链表原题链接------->点击查看原题链接题干:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。二、C语言解决方案1.题目分析本题我的实现方法使用了头结点去指向新的链表的头部,(当然没有头指针也能实现)所以最后return l3->next;
2021-08-15 22:32:13
206
原创 力扣2. 两数相加(C语言实现)
2021.08.15记录自己的力扣刷题之旅文章目录前言一、题目:两数相加二、C语言解决方案1.题目分析2.C语言代码实现三、代码实现截图展示总结前言一、题目:两数相加原题链接------->点击查看原题题干:给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。二、C语言解决方案1.题目分析首先题目要求
2021-08-15 21:35:44
1437
原创 力扣19. 删除链表的倒数第 N 个结点(C语言实现)
2021.08.15记录自己的力扣刷题之旅文章目录前言一、题目:删除链表的倒数第 N 个结点?二、C语言解决方案1.题目分析2.C语言代码实现三、代码实现截图展示总结前言一、题目:删除链表的倒数第 N 个结点?原题链接------>点击查看原题题干:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例 1:二、C语言解决方案1.题目分析首先对于链表型的题目,由于链表(如果只有next指针的情况)自带的特性,如需要定位到某一个
2021-08-15 20:05:51
446
原创 C语言实现线性表的链式存储表示和实现
2021.08.151、记录自己学习数据结构中对于链式表的实现,实现了对于链式表的增插删改查2、其中最难的是插入和删除因为该操作都涉及到了指针的指向问题,插入函数ListInsert_L代码片段+详解Status ListInsert_L(LinkList& L, int i, ElemType e) { int index = 0; LinkList P = L; LNode* newnode; while (P && index < i - 1) {
2021-08-15 15:37:24
572
原创 C语言实现线性表的顺序存储表示和实现
2021.08.141、记录自己学习数据结构中对于顺序表的实现,实现了对于顺序表的增插删改查2、其中最难的是插入和删除因为该操作都涉及到了表的移动,插入函数ListInsert_Sq代码片段+详解:Status ListInsert_Sq(SqList& L, int i, ElemType e) { if (i<1 || i>L.length) { return ERROR; } if (L.length == L.listsize) { ElemType*
2021-08-14 14:14:21
253
原创 C语言动态规划法解决0/1背包问题(详细解答)
动态规划法解决0/1背包问题(详细解答)首先让我们回顾一下动态规划法的使用规则:一.、动态规划法的实现思路:1、划分子问题:将元问题分解为若干个子问题,每一个子问题对应一个决策,并且子问题之间具有重叠关系2、确定动态规划函数:根据子问题之间的重叠关系找到子问题满足的递归关系式(即动态规划函数),这是实现思路的关键。3、填写表格:设计表格,自下而上的方式计算各个子问题的解并填表,实现动态规划过程。二、0/1背包问题给定n中物品和一个背包,物品i(1<=i<=n)的重量是wi,
2021-03-14 10:32:39
8351
2
原创 实例1.1 最大子列和问题
**简洁版本:**#include<stdio.h>#define MAX_size 100000int Findmaxsum(int array[], int numsize);int main(){ int array[MAX_size]; int size; int maxsum = 0; scanf("%d", &size); getchar(); for (int i = 0;i < size;i++) { scanf("%d", &
2020-12-14 18:53:46
105
原创 习题3.13 双端队列
bool Push(ElementType X, Deque D) //将元素X插入到双端队列D的头;{ if ((D->Rear + 1) % D->MaxSize == D->Front) return false; if (D->Front == D->Rear) { D->Data[D->Front] = X; D->Rear = (D->Rear + 1) %
2020-12-13 22:36:41
223
原创 习题3.5 求链表的倒数第m个元素
ElementType Find(List L, int m){ int sumnumber = 0,temp=0,sum=0; List P; P = L->Next; while (P != NULL) { sumnumber++; P = P->Next; } P = L->Next; temp = sumnumber - m + 1; while (P != NULL)
2020-12-13 10:26:10
151
原创 习题2.5 两个有序链表序列的合并
List Merge(List L1, List L2){ List P, searchP1, searchP2, searchP3; P = (List)malloc(sizeof(List)); P->Next = NULL; searchP1 = L1->Next; searchP2 = L2->Next; searchP3 = P; while (searchP1 != NULL && searchP2 != NULL) { if (searc
2020-12-13 10:06:12
141
原创 C语言实现最大字段和(动态规划法和分治法)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、动态规划法二、分治法三、程序总代码总结前言本次将对最大字段和使用C语言实现的两种方法实现,动态规划法和分治法,两种方法所反映和表现是不同的想法和做法,但是动态规划法的时间复杂度更低,那并不是说分治法就不行,相反只是在解答最大字段和的时候没有动态规划法来的高效罢了。代码都比较的好理解,认真看都能看得懂,这里就不解释了!一、动态规划法int maxsum2(int a[],int left,int right){
2020-11-22 15:29:20
3161
2
原创 力扣12. 整数转罗马数字(C语言实现)
力扣12. 整数转罗马数字—C语言实现快看这里:题目原题点击这里问题描述:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 ---------- 数值I------------------ 1V----------------- 5X---------------- 10L----------------- 50C----------------
2020-11-06 23:23:53
1227
原创 使用C语言的循环链表解决约瑟夫问题
使用C语言的循环链表解决约瑟夫问题** 第一次做CSDN的博客,所以很简陋,但很朴实,嘿嘿。代码其实很low,该优化的地方很多,但是我觉得特别适合初学者学习,因为这正是初学者的我一步步笨手笨脚写出来的。**下面让我细细的分析这段长长的代码,希望有人会耐心看完。1.首先我们用Cycle_list initList_Sq()函数建立一个最简单的循环链表。(Cycle_list 这个是我命名的结构体指针,应该很好懂的啦。)这里我巧妙的把头结点 head->date=1; 为什么呢?我后面解答
2020-08-27 16:39:58
665
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人