数据结构c语言版
文章平均质量分 60
我会自己写书中(数据结构c语言版清华大学)所有程序的纯c代码到此栏目中,可以正常运行的,希望学习这本书的人可以关注此栏目共同进步
effility
我好菜啊,什么时候才会努力啊,傻瓜
展开
-
C语言中 . -> & * ** typedef符号或操作符的用法
大家在看数据结构清华版书时,经常会被里面的 * . -> typedef c语言 c++的切换看的云里雾里,运行里面伪代码经常很困扰,网上也大多把c语言和c++看成一起混合编译处理,导致大家单纯想理解c语言造成很多困扰,下面这篇文章仅针对于c语言详细说明上面几个符号的用法,帮助大家理解纯c代码。先说结论,在C语言中,对于一个结构体类型变量a上面两种写法是等价的对于上面这段代码可以看成在操作系统内部做了上图的操作,首先,创建了一块内存大小为4个字节,首地址0x0000,结束地址为0x0004,对于原创 2022-06-21 14:09:55 · 1922 阅读 · 1 评论 -
c语言双向链表的实现
实现了头插法建立双向链表,尾插法建立双向链表,节点的增删改查,链表的顺序遍历,逆序遍历等代码如下#include <stdio.h>#include <stdlib.h>#define TRUE 1;#define FALSE 0;typedef struct DuLNode{ int data; struct DuLNode *prior, *next;}DuLNode, *DuLinklist;//尾插法创建双向链表void Cre原创 2020-07-12 23:40:32 · 1125 阅读 · 3 评论 -
头插法建立双向链表
单链表只能向后访问其他节点的数据,若需要寻找某节点前面节点的数据,则需要从表头开始,重新进行遍历,效率不高,为了克服单链表单向性的缺点,可以利用双向链表双向链表有两个指针域,一个指向直接后继,一个指向直接前驱,头插法建立双链表的方法如下结构体定义如下typedef struct DuLNode{ int data; struct DuLNode *prior, *next;}DuLNode, *DuLNode;prior代表前驱,next代表后继初始化头节点head,原创 2020-07-12 21:59:10 · 6687 阅读 · 2 评论 -
尾插法建立链表详解
尾插法,顾名思义,就是把新加入的节点插入到上一个节点的尾部(头插法是把新加入的节点插入到上一个节点的头部),next存储下一个节点位置的地址,开始时,初始化定义头节点head -> next = NULL;表示头节点的下一个节点为空,就是该链表只有一个头节点,图形化表示为由于头插法要把每一个新加入的节点插入到上一个节点的尾部,所以需要定义一个指针,记录每次插入变换后的最后一个节点的指针域信息r = head;将头节点赋值给r,r记录每次插入变换后尾部的信息申请一个节点原创 2020-07-10 10:42:58 · 42729 阅读 · 25 评论 -
头插法建立链表详解
头插法就是建立一个头节点,进行初始化定义,next存储下一个节点位置的地址,初始化定义指针域为空,表示该头部节点后面指向任何位置的地址,开始时只有一个头部节点。head -> next = NULL;图形化表示为申请一个新节点A1,将A1按照头插法插入到head节点的后面,实现代码为p -> next = head -> next;head -> next = p;p -> next表示p后面指向的地址,将该地址赋值给为头部节点的所指向的下一个节点原创 2020-07-10 00:04:31 · 19205 阅读 · 14 评论 -
数据结构C语言线性表的顺序存储实现
原理是申请一段连续的内存空间,对这段内存空间进行相关操作实现基本的功能,大致实现了数据结构C语言版第二章顺序线性表的所有功能和算法,代码如下#include"stdio.h"#include"stdlib.h"#define OVERFLOW 0#define OK 1#define LIST_INIT_SIZE 20#define LISTINCREMENY 3#define TRUE 1#define FALSE 0/*结构体的定义如下,在该结构体中,有三个属性指针变量原创 2020-07-09 16:36:43 · 386 阅读 · 0 评论 -
c语言顺序表的基本操作
下面是顺序表的基本操作,c语言版的数据结构书上写的操作都实现了因为总体代码太长如果写在一个class中要近500行,阅读和修改都不方便,所以采用分开写,希望大家以后写较长的程序时也采用这种方法,自己运行的所有功能都能实现,而且个人感觉界面还是比较人性化的,大家还有什么意见或者程序有什么问题都可以在评论区提出,我会及时修改的。main.cpp#include "seqlist.h"int m...原创 2018-06-30 15:18:36 · 16829 阅读 · 8 评论 -
c语言线性表的链式存储的实现
下面是链表的一些基本操作,使用c语言实现#include "HA.h"int main(){ int e,n,select=1; LinkList L; LinkList T; printf("请输入所要创建链表的结点个数\n"); scanf("%d",&n); printf("**************************...原创 2018-07-01 17:19:58 · 3013 阅读 · 0 评论 -
静态链表的实现
对于一般的动态链表来说,要动态分配,还要借助指针对于静态链表来说,不用借助指针,建立两个数组,一个数组存储数据,一个数组存储各个元素之间的位置关系从某方面来说,静态链表是顺序表和链表的结合体,即具有二者的有点,如,插入和删除时不需要移动元素,便于查找(某种情况下),但同时也具备了二者的缺点,首先就是失去了动态性,浪费空间,修改次数多了以后查找也不再方便#include <...原创 2018-08-30 23:38:29 · 293 阅读 · 0 评论 -
c语言循环链表的实现
单链表有一定的缺陷,就是单向性,只能从一个结点到下一个节点,而不能访问到上一个结点,而循环链表就可以解决这一问题,当然,用双向链表更加方便#include <stdio.h>#include <stdlib.h>typedef struct node{ int data; struct node *next;//指针域 int size...原创 2018-09-01 13:22:57 · 9204 阅读 · 4 评论 -
c语言实现双向链表
单向链表有一定的缺陷,其中一个就是只能一条路走到黑,只能前进不能后退,但双向链表就解决了这一问题#include <stdio.h>#include <stdlib.h>typedef struct node{ int data; struct node *next; struct node *prior;}node,*linklis...原创 2018-09-02 10:11:56 · 2100 阅读 · 1 评论 -
栈的顺序存储结构
和线性表的顺序存储很像,但是基本操作要简单的多#include <stdio.h>#include <stdlib.h>#define MAX 100typedef struct sqstack{ int data[MAX]; int top;//栈顶,表示数组的大小}sqstack,*linklist;void create_st...原创 2018-09-02 11:06:57 · 156 阅读 · 0 评论 -
栈的链式存储结构的实现
栈的链式存储结构和线性表的链式很像,而且简单的多#include <stdio.h>#include <stdlib.h>typedef struct node//结构体定义{ int data;//数据域,存储数据 struct node *next;}node,*linklist;void create_stack(linklist...原创 2018-09-02 11:41:00 · 186 阅读 · 0 评论 -
c语言队列的顺序存储结构
这是根据顺序表实现的队列的顺序存储结构#include <stdio.h>#include <stdlib.h>typedef struct node{ int data[100]; int size;}node,*linklist;void create_queue(linklist *l)//队列的建立{ (*l)=(nod...原创 2018-09-02 21:46:16 · 392 阅读 · 0 评论 -
c语言循环队列的建立
对于队列来说,出队列就是在队列头部出来,然后将后面的元素移动前一位,使他重新变成从0开始的队列数组如果我们不移动就会遇到前面好多空位,却被判定为队满(后面在进队列的过程中进满了)称为假溢出循环队列就可以解决这个问题,‘’队满‘’时从头部开始重新插入#include <stdio.h>#include <stdlib.h>#define max 5typ...原创 2018-09-04 11:30:26 · 2629 阅读 · 0 评论 -
c语言队列的链式存储
队列的链式存储的一种实现方法就是简化版的线性链表#include <stdio.h>#include <stdlib.h>typedef struct node//结点结构{ int data; struct node *next;}node,*linklist;typedef struct//队列的链表结构{ linklist...原创 2018-09-04 22:35:38 · 240 阅读 · 0 评论 -
c语言二叉树的建立,遍历,求根的深度,叶子节点的个数
#include <stdio.h>#include <stdlib.h>typedef struct node{ char data; struct node *rchild,*lchild;}node,*linklist;void preorder_create(linklist *l)//先序创建二叉树{ char ch,t...原创 2018-09-06 23:19:31 · 2974 阅读 · 0 评论