
考研数据结构
随心而梦
这个作者很懒,什么都没留下…
展开
-
顺序查找(c语言描述)
#include<stdio.h>int Search(int *arr,int len,int key)//顺序查找{ int i = 0; for (; i < len; i++) { if (arr[i] == key) return i; if (i ==len) return -1; }}int main(){ int arr[] = { 5, 32, 11, 43, 90, 23 }; int len = sizeof(arr) /.原创 2021-10-13 10:19:17 · 172 阅读 · 0 评论 -
图的邻接矩阵及其实现C语言
邻接矩阵就是在图中如果存在边的话就把矩阵相应位置的值设置为权值无权图设置为1#include<stdio.h>#define MAXSIZE 100typedef struct{ int data[MAXSIZE];//顶点数组 int arc[MAXSIZE][MAXSIZE];//邻接矩阵 int vexnum, edgenum;//当前的定点数和边数 }MGraph;void CreateMgrapg(MGraph *p){ int i, j, k, w;原创 2021-10-10 18:56:00 · 1803 阅读 · 0 评论 -
邻接表创建无向图
#include<stdio.h>#include<stdlib.h>#define MAXSIZE 100typedef struct Node//边表{ int adjvex;//储存顶点对应下标 Node *next;}Node;typedef struct VerexNode//顶点表{ char data; Node *firstB;}VerexNode, AdjList[MAXSIZE];typedef struct Mgraph//邻接...原创 2021-10-10 16:41:32 · 759 阅读 · 0 评论 -
寻找共同的表尾
就是先比较长度如果长度不一样让长的链表先遍历到相同的长度然后同时向后遍历如果有一个结点的值相同则退出循环#include<stdio.h>#include<stdlib.h>typedef struct LNode//定义结构体{ char data; LNode *next;}LNode,*LinkList;void tailList(LinkList &L,char arr[],int n){ L = (LNode *)malloc(sizeof(原创 2021-09-27 20:50:43 · 74 阅读 · 0 评论 -
链栈的基本操作
链栈是一种数据存储结构,可以通过单链表的方式来实现,使用链栈的优点在于它能够克服用数组实现的顺序栈空间利用率不高的特点,但是需要为每个栈元素分配额外的指针空间用来存放指针域,使用链栈较顺序栈来说不存在栈满;链栈就是仅在表尾进行插入删除的单链表,插入和删除采用的是头插法#include<stdio.h>#include<stdlib.h>typedef struct StackNode{ int data; struct StackNode *ne...原创 2021-09-20 15:06:27 · 413 阅读 · 0 评论 -
顺序栈的基本操作
栈是一种运算受限的线性表,是一种先进后出的数据结构,限定只能在一端进行插入和删除操作,允许操作的一端称为栈顶,不允许操作的称为栈底顺序栈的实现是十分简单的跟顺序表的顺序存储基本一致顺序栈的基本操作如下:#include<stdio.h>#include<stdlib.h>#define MaxSize 50//顺序栈的初始空间#define Stackcream 10//存储空间分配增量typedef struct{ int data[MaxSize]原创 2021-09-18 21:26:23 · 841 阅读 · 0 评论 -
如何创建带头结点的双链表
深度在创建带头结点的双链表前我们需要先了解什么是双链表:双链表是在单链表的基础上多了一个 指向其直接前驱的指针初始状态因为只有一个头结点所以,L->next=NULL;L-.prior=NULLL;这样在任何一个结点都可以很方便的访问其前驱结点和后继结点在访问其前驱和后继是时间复杂度都为O(1)创建头结点的双链表可以使用头插法和尾插法来实现下面依次讲解:...原创 2021-09-18 13:57:24 · 1041 阅读 · 1 评论