![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构基础
西郊外
这个作者很懒,什么都没留下…
展开
-
判断一个链表是否有环,如果有,找出环的入口点,并返回,否则返回NULL(有例子启发)
题目是:设计一个算法完成以下功能:判断一个链表是否有环,如果有,找出环的入口点,并返回,否则返回NULL今天看到这,看答案看了个题好几遍也没看明白思路,跑步回来在纸上比划了比划,感觉思路有点清晰了,手有余温,赶紧记录下来想法,(如果后面有新的想法或者是别的也会及时更新)。进入正文。算法思想就是:设置两个快慢指针分别为fast和solw初始化,快慢指针都指向链表head 慢指针每走一步solw=slow->next,快指针每次走两步fast=fast->nest->nes.原创 2020-06-23 23:42:52 · 938 阅读 · 3 评论 -
直接插入排序(c语言实现)
直接插入排序(c语言实现)排序思想:如打扑克牌一样,每次抓到一张牌都要插到合适的位置(假如从下到大排序—您拿到一张牌为5,下次拿到3,这时候您需要把3移动到5的左边,这时有拿到一张6的话您需要把6移动到5的右边…),直到抓完为止,#include<stdio.h>void insertsort(int a[6],int l){ int i=0,j=0,temp=0; for...原创 2019-03-23 10:52:32 · 2196 阅读 · 0 评论 -
有向图的邻接表的建立,深度遍历并输出(c语言实现有向网)
图的邻接表表示法(c语言实现有向网)[ ]为方便理解。 首先先为图的邻接表画一个模型,邻接表可以分为两部分(1.表头节点,2.弧节点)如上图,因为写的代码是有向网,所以选择上图,首先在脑海里建立一个模型代码如下#include<stdio.h>#include<stdlib.h>//*邻接表用两部分表示 1顶点节点包含(data firstarc) 2弧...原创 2019-03-25 01:25:33 · 8440 阅读 · 0 评论 -
c语言中结构体类型变量类型,结构体变量名赋值
结构体的详情参考本文档、c语言中结构体类型变量类型,结构体变量名赋值这几天看图用领接表存储图时候,开始实现的时候发现对结构体的变量名赋值有些疑惑,疑惑的地方查了下,留做备份//此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c//同时又声明了结构体变量s1//这个结构体并没有标明其标签struct{int a;char b;double c;} s1;...原创 2019-03-24 22:22:16 · 2607 阅读 · 0 评论 -
线索化二叉树(先序遍历建立二叉树,中序线索化二叉树)
线索化二叉树先序序列创建二叉树tree creat(){ //前序序列创建二叉树 tree t; int ch; scanf("%d",&ch); if(ch==0) { t=NULL;} else{ t=(tree)malloc(sizeof(node)); t->data=ch; t->lchild=creat(); t->...原创 2019-03-07 19:54:05 · 1136 阅读 · 0 评论 -
先序遍历和中序遍历建立二叉树,并且以后续遍历输出二叉树
先序遍历和中序遍历建立二叉树,并且以后续遍历输出二叉树假设先序遍历为:abcdefghi(根 左 右)中序遍历为:bcaedghfi (左 根 右)首先在先序遍历中可以确认a为根节点在中续遍历中可以看到bc(初始位置为b(长度为2)) 为a 的左子树 edghfi(初始位置为e长度为6)为a的右子树同时注意前序序列中a左子树的初始位置为b(长度为2),右子树的初始位置为e长度为6;...原创 2019-03-02 22:10:32 · 881 阅读 · 0 评论 -
中序序列二叉树的非递归算法实现(调用栈的操作函数)
c语言 中序序列二叉树的非递归算法实现(调用栈的操作函数)算法思想冲当前的节点开始,如果当前的节点存在而且栈不为空,重复以下操作如果当前的节点不为空,进栈并且遍历其左子树读栈顶的节点,并输出,同时栈顶退栈,遍历其右子树#include<stdio.h>#include<stdlib.h>typedef struct node{ int data; st...原创 2019-03-01 22:47:28 · 395 阅读 · 0 评论 -
kmp算法实现(c语言)
kmp算法实现(c语言)这个kmp算法思路,以及其中的next[]数组的解释可以说是我看过最详细的了,附上链接#include &lt;stdio.h&gt;#include &lt;string.h&gt;#include &lt;stdlib.h&gt;void getnext(char *p,int *next){ int len=strlen(p); int k=-1;转载 2019-02-20 13:51:05 · 2573 阅读 · 0 评论 -
顺序串的简单模式匹配(定位)
设S=‘ababcabcacbab’, P=‘abcac’,从S的第1个字符开始,依次比较S和P中的字符,如果没有完全匹配,则从S第2个字符开始,再次比较...如此重复,直到找到P的完全匹配或者不存在匹配。用数学语言描述,就是比较SiSi+1...Si+n-1和P0P1...Pn-1,如果出现不匹配,则令i=i+1,继续这一过程,直到全部匹配,或者i>(m-n)。匹配过程如下(红色字体表示本趟比较中不匹配的字符)转载 2019-02-19 18:53:20 · 1166 阅读 · 0 评论 -
迷宫问题
#include <stdio.h>#define MaxSize 100#define M 8#define N 8int mg[M+2][N+2]={ {1,1,1,1,1,1,1,1,1,1}, {1,0,0,1,0,0,0,1,0,1}, {1,0,0,1,0,0,0,1,0,1}, {1,0,0,0,0,1,1,0,0,1}, ...转载 2019-02-19 16:38:48 · 131 阅读 · 0 评论 -
二叉树建立一个先序序列(递归实现)
二叉树建立一个先序序列(递归实现)0代表空树注意当输入叶子节点左右子树都为空树 ,这时需要在后面输入0 0(两个0)注意理解递归方法,找到入口和出口#include<stdio.h>#include<stdlib.h>typedef struct node{ int data; struct node *lchild,*rchild; } node,...原创 2019-02-28 18:30:46 · 1751 阅读 · 0 评论 -
设计一个算法,将以为数组A(下标从0开始)中的元素循环右移k位,要求只用一个元素大小的附加存储空间。给出空间的时间复杂度。
设计一个算法,将以为数组A(下标从0开始)中的元素循环右移k位,要求只用一个元素大小的附加存储空间。给出空间的时间复杂度。1.暴力移位法——即一位一位移(时间的复杂度n*m)#include <iostream> #include <string> using namespace std;void rotate(string &str,int m){...原创 2019-02-24 17:35:31 · 2360 阅读 · 0 评论 -
若矩阵A(m*n)中的某个元素a(i,j)是第i行中的最小值,同时又是第j列的最大值,则称此元素为该矩阵中的一个马鞍点。假设以二维数组存储矩阵,试编写算法求出矩阵中的所有马鞍点。
若矩阵A(m*n)中的某个元素a(i,j)是第i行中的最小值,同时又是第j列的最大值,则称此元素为该矩阵中的一个马鞍点。假设以二维数组存储矩阵,试编写算法求出矩阵中的所有马鞍点。#include<stdio.h>#include<stdlib.h>typedef struct node{ int row; int col; int data;} node;i...原创 2019-02-24 15:29:26 · 12775 阅读 · 1 评论 -
括号匹配算法实现(c语言)
标题括号匹配算法实现(c语言)#include <stdio.h>#include <stdlib.h>#include<stdbool.h>#define size 50typedef struct{ char elem[size]; int top;}seqstack ;void initStack(seqstack *s){ s-&g...原创 2019-02-12 12:42:45 · 10905 阅读 · 2 评论 -
停车场管理(c语言顺序栈和链队列的方式实现)
数据结构——用c语言描述 停车场管理(顺序栈和链队列的方式实现)1.描述 车库(栈)中最多停车辆50辆;车库停满后进入车库口便道(队列)排队,车库有空位时从便道进入车库停车#include<stdio.h>#include<stdlib.h>#include <string.h>//引用strcmp函数(较字符串是否相等)和strcpy(字符串复制...原创 2019-02-16 20:34:33 · 3197 阅读 · 0 评论 -
回文数判断。称正读反读都相同的字符序列为“回文”序列
回文数判断。称正读反读都相同的字符序列为“回文”序列(栈的方式实现)#include <stdio.h>#include <stdlib.h>#include<stdbool.h>#define size 50typedef struct{ char elem[size]; int top;}seqstack ;void initStack(s...原创 2019-02-15 23:42:26 · 10306 阅读 · 4 评论 -
已知顺序表L中的元素为int,请写一时间复杂度为o(n),空间复杂度为o(1)的算法,将L中的奇数元素排在前面,偶数元素排在后面
整体思路:从头查找,只要查找到奇数,就和第一个非奇数交换位置,因为只有一个 for 循环 , 所以时间复杂度为1;我觉得跟冒泡排序法有点相似原创 2019-01-25 15:11:45 · 5676 阅读 · 1 评论