<<啊哈算法>>链表问题及malloc和free动态内存问题

free()函数详解 首先我们知道,在使用struct来定义并声明一个变量时,将会自动划分出一个连续的储存空间(虽然根据某些对齐原则会出现内存间隙,但是大体上来说还是连续的) 这一块连续空间将会包括结构体中的其他变量所需要的内存。就像这样。 这是一个名为X的结构体变量 而free()函数的作用是对动态分配的内存进行释放,这也就意味着当使用free函数清空一个结构体时,只会清空这个大框里的内存,而不会对a,b,c,d指向的内存进行清理。 当然,一般来说直接定义变量于结构体内会更加方便。 但是考虑一下两种声明 struct stu 阅读详情
#include<stdio.h>
#include<stdlib.h>
struct node
{
	int data;
	struct node* next;
};
int main()
{
	struct node* head, * p, * q, * t;
	int i, n, a;
	scanf_s("%d",&n);
	head = NULL;
	for (i=1;i<=n;i++)
	{
		scanf_s("%d", &a);
		p = (struct node*)malloc(sizeof(struct node));	
		//申请一块空间给p
		p->data = a;//p结点的数据域是a
		p->next = NULL;//p下一个结点是null
		if (head == NULL)
		{
			head = p;
			
		}
		else
			q->next = p;
		q = p;
	}
	t = head;
	while (t != NULL)
	{
		printf_s("%d", t->data);
		t = t->next;
	}
	getchar(); getchar();
	return 0;
}

这是<<啊哈算法>>中关于链表的代码,但是在vs2019运行时,发生了错误

提示指针q没有初始化,对指针进行初始化或赋值的实质是将一个地址或同类型(或相兼容的类型)的指针赋给它.

于是我仿照p = (struct node*)malloc(sizeof(struct node));写了q = (struct node*)malloc(sizeof(struct node));申请了一块内存分配给q

但是程序还是不对

比如我想要一个3个元素分别是123的链表

 输出的时候,发现他只会输出第一个

于是我经过查验,发现是因为我把申请q所需空间的语句写在了循环里面,这导致我的链表只有最开始的一个结点,以后的q没有连接到链表.

将申请空间的语句写到外面后问题解决.

<<啊哈算法>>里面并没有释放内存,这不太好,虽然我没用过free(),但是我见过猪跑,并且有始有终是个好习惯.

于是我观察了一下,确认在代码中p的作用在循环末尾就已经结束了,于是在循环末尾我加上了free(p);

#include<stdio.h>
#include<stdlib.h>
struct node
{
	int data;
	struct node* next;
};
int main()
{
	struct node* head, * p, * q, * t;
	int i, n, a;
	scanf_s("%d",&n);
	head = NULL;
	q = (struct node*)malloc(sizeof(struct node));
	for (i=1;i<=n;i++)
	{
		scanf_s("%d", &a);
		p = (struct node*)malloc(sizeof(struct node));	
		//申请一块空间给p
		p->data = a;//p结点的数据域是a
		p->next = NULL;//p下一个结点是null
		if (head == NULL)
		{
			head = p;
			
		}
		else
			q->next = p;
		q = p;
		free(p);
	}
	t = head;
	while (t != NULL)
	{
		printf_s("%d", t->data);
		t = t->next;
	}
	getchar(); getchar();
	return 0;
}

验证的时候,程序引发了异常.啊?

到这里,我想到free释放的是动态申请到的内存,那么这个内存中原来的值会发生什么呢?同时如果还有其他指针指向这个地址,又会怎么样呢?

于是我写了个小程序进行验证

#include<stdio.h>
#include<stdlib.h>
int main()
{
	char* p;
	p = (char*)malloc(100 * sizeof(char));
	printf("\n第一次输入:");
	scanf_s("%s", p,20);
	printf("\n第一次输出:%s\n", p);
	free(p);
	printf("\n第二次输入:");
	scanf_s("%s", p,20);
	printf("\n释放之后的输出:%s\n", p);
	return 0;
}


关于打印会引发异常,以及查证得到的"free()释放的是指针指向的内存!注意!释放的是内存,不是指针!",判断以这个程序举例,最开始动态申请了一块内存,后来将这块内存指向地址,而free释放的正是指向的地址的那部分内存,所以free()之后重新赋值给指向地址的那部分内存的话,输出可以正常输出,否则的话,free()后,这部分内存存储的是垃圾值,无法正常输出.指向这部分内存的q在使用时也会发生错误

C语言动态链表malloc、realloc、free函数详细介绍(附代码示例) 在很多情况下,我们定义一个数组时,并不知道这个数组将来会存放多少个数据元素。更普遍的情况是,数组中的元素个数一直在不断变化。 例如,一个存放学生信息的结构体数组。如果出现插班生入学、学生转学等情况,就需要往数组中增加或删除数据元素。 阅读详情

相关推荐

`free` 内存释放函数

free。

weixin_42108533的博客 1393

c语言free函数的作业,关于c语言的free函数

目录0 缘起1 free() 使用前- free前程序做了什么2 free 的作用- free对内存做了什么- free对指针做了什么3 free后怎样做4 Q&A(1) Q:有malloc 一定有free吗?(2) Q:该free的地方没有free,会发生什么?(3) 野指针和悬空指针?5 讲个故事6 参考文献0 缘起在回顾用C语言实现链表的过程中,发现每个节点在开辟空间之后,到下一个节...

weixin_39800062的博客 468

从0到1做AI漫剧:即梦+豆包+剪映+红果全流程实战

AI视频生成正在重塑内容创作的生产方式,它让原本高门槛的影视制作,变成了一条由文本、画面、剪辑与分发环节协同的流水线。理解其底层原理,在于将大模型的语义理解、图像生成与视频合成能力,与工程化的流程管理相结合,从而实现从创意到成片的自动化输出。这种技术的价值,不仅体现在降低制作成本,更在于让个人创作者能够独立完成高质量短剧,并快速迭代内容。在短剧、短视频、广告营销等场景中,利用即梦生成画面、豆包编写剧本、剪映完成剪辑、红果进行分发的组合,已成为一种被广泛验证的实践路径。本文聚焦AI漫剧制作,从环境准备、分镜设

weixin_34072637的博客 386

free函数

前言 做到一个题,要求删除链表结点后释放内存,乍一看,挺简单的,不就delete或free一下就可以了吗。调试时还是有点不一样的收获的,记录一下。 内存泄漏 就是如果开辟了内存,而没有去释放它,可能造成失去控制权而不能再使用内存,即内存泄漏。 free函数 代码片段: cout<<"before"<<maxPrev; free(maxPrev); cout<&l...

LLM & Fuzzing & Security Lab 890

普源精电DHO系列示波器选购指南:从学生党到工程师的完整对比

本文深入评测普源精电DHO系列示波器,从DHO800到DHO4000各型号的核心参数、功能特点及适用场景进行全面对比,帮助学生党和工程师根据实际需求选择最佳型号。重点分析带宽、采样率、存储深度等关键指标,并提供实用的选购建议和进阶使用技巧,帮助用户充分发挥示波器性能。

weixin_30485379的博客 167

Intel Realsense d435 使用python对深度图进行预处理

Intel Realsense d435 使用python对深度图进行预处理 本文中主要翻译一下一篇关于深度图预处理过滤器的内容,后面还会有关于距离测量的。 原文中的图像显示,是使用matplotlib.pyplot工具,在本文中,使用opencv来显示深度图》 首先常规操作导入包: import cv2 import numpy as np import pyrealsense2 as rs 获取我们所需要的图像,通过摄像头或者本地都可以 pipe = rs.pipeline() cfg = rs.co

qq_25105061的博客 1万+

链表内存的释放

 链表是一种很常用的数据结构,如果在建立的时候为其每个节点分配了堆中的内存,则在程序结束前应该释放它,下面是常有的一段释放链表内存的程序:p = plist;//p和plist是指向一段相同地址空间的两个不同指针。while(p !=NULL)...{    q=p->next;    free(p);    p=q;}plist=NULL;//只是释放了其内存空间,指向链表的指针值并没有

pqw1157的专栏 1万+

基于OpenCV的围棋终局识别与胜负判定系统实现

计算机视觉是人工智能领域的关键技术,它使计算机能够从数字图像或视频中获取、处理和分析信息。其核心原理在于通过图像处理算法提取特征,并基于这些特征进行识别、分类和测量。在工程实践中,计算机视觉技术为自动化、智能化应用提供了强大支持,广泛应用于工业检测、自动驾驶、医疗影像分析等领域。本文聚焦于一个具体的应用场景:利用OpenCV库实现围棋终局识别。通过图像预处理、棋盘检测与透视校正、交叉点定位等步骤,结合围棋规则逻辑,构建了一套从棋盘图像自动判定胜负的解决方案。该方案涉及自适应二值化、霍夫变换、连通域分析等关键

weixin_29100927的博客 281

啊哈算法----单链表的基本概念

文章目录前言一、链表是什么?二、使用步骤1.引入库2.读入数据总结 前言 数组在平常使用中的比较多的,但是有时候我们会需要在一串已经排好序的序列中,插入一个数字,并要求仍符合从小到大的要求。 2 3 5 8 9 10 18 26 32 ,现在要插入6并且是排序好的,此时使用数组的话,就要将8以及8以后的数字往后挪一位。 这样的操作会很耽误时间!使用链表会快很多, 一、链表是什么? 在C语言中可以使用指针和动态分配内存函数malloc来实现。e~指针是啥子嘞,指针其实挺简单的。 先看看下面两行代码 int

m0_54129816的博客 262

rk3588主板PDM接口接数字MIC录音

本文介绍了Rockchip 3588平台上6麦克风PDM接口的硬件连接与软件调试过程。硬件方面展示了PDM0_CLK0_M0时钟脚和三组数据脚的连接方案。软件配置包括设备树修改,生成声卡节点,并提供了6通道录音命令示例。文章重点分析了两个常见问题:录音无声(需检查供电、接线和波形)和通道数据缺失(需正确配置rockchip,path-map寄存器映射)。最后通过Audition工具验证录音文件,确认各通道工作正常。调试过程完整展现了从硬件连接到软件配置的完整流程。

m0_60805802的博客 1015

农业无人机:无人机图像处理_(8).遥感图像处理与分析

遥感图像处理与分析在农业无人机技术中具有重要作用,通过图像预处理、特征提取、分类与分割、目标检测等技术,可以实现对农田的精细管理、作物监测、病虫害预测等应用。本节详细介绍了这些技术的基本概念、常用方法和具体实现,希望对您在农业无人机图像处理方面的学习和应用有所帮助。

zhubeibei168的博客 1337

处理动态链表所需函数二:calloc与free

/* 分配内存空间函数:calloc(); (类型说明符 *)calloc(n, size); 功能:在内存动态存储区中分配n块长度为size字节的连续区域。 函数的返回值为该区域的首地址。 calloc函数与malloc函数的区别: 仅在于calloc函数一次可以分配n块区域。 ps = (struct stu *)calloc(2, sizeof(struct stu)); 按stu的长

Geek_ymv的专栏 993

AIGC游戏本地化:用AI实现多语言自动翻译

游戏本地化是游戏全球化战略的关键环节,传统人工翻译方式成本高、周期长。本文旨在探讨如何利用AIGC技术实现高效、准确、低成本的游戏多语言自动翻译解决方案。我们将覆盖从文本翻译到语音合成的完整本地化流程,重点关注AI技术在游戏特定语境下的应用优化。文章首先介绍游戏本地化的核心挑战和AI解决方案,然后深入讲解关键技术原理,接着通过实战项目演示具体实现,最后讨论应用场景和未来趋势。AIGC:人工智能生成内容,指利用AI技术自动生成文本、图像、音频等内容本地化(Localization)

AI 领航者的博客 1339

(啊哈!算法)(第二章)链表

//链表的创建与插入值 #include<iostream> #include<cstdio> #include<cstdlib> using namespace std; struct node{//定义链表节点 int data; struct node *next; }; int main() { struct node *head,*q,...

肘子的博客 477

【ESP32设备通信】-两个ESP32间UART通信

在本文中,我们将使用 Arduino IDE 的 UART 硬件库在两个 ESP32 板之间执行 UART 或串行通信。 要使用 USB 端口调试和编程 ESP32,需要使用称为通用异步接收器/发送器 (UART) 通信的串行端口。 对于大多数传感器和系统,主要的通信方法被认为是 UART。 为了共享工作负载、信息和执行不同的任务,有时需要在两个 ESP32 开发板之间进行通信。

视觉与物联智能 2996

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

简单易懂的数据结构和算法--《啊哈!算法》--链表(数组实现)

导叙:根据啊哈磊老师的《啊哈!算法》整理的学习笔记,如有侵权,联系删除 图书链接:https://pan.baidu.com/s/18qNteKTnKJJpdo7Dks50FA 提取码:ym1t 关注微信公众“伊斯电子编程”获取更多资源 完整的代码实现如下 #include <stdio.h> int main() { int data[101],right[101]; ...

m0_46202433的博客 239

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

《啊哈,算法》第二章、队列、栈、链表

二、队列、栈、链表 1、队列 线性结构,先进先出,即只允许在队列的首部(head)进行删除操作,这称为“出队”, 而在队列 的尾部(tail)进行插入操作,这称为“入队”。 先初始化一个数组:int q[10]={0,6,3,1,7,5,8,9,2,4}; 初始化首部,尾部: int head = 1;int tail = 10;,tail初始指向为空,可以避免与head重复; 出队操作:head++; 入队操作:q[tail]=x; tail++;这里x为入队的值 2、栈 线性结构,

qq_45467524的博客 794

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

C中的malloc和free释放原理

一、malloc()和free()的基本概念以及基本用法: 1、函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。 关于分配失败的原因,应该有多种,比如说空间不足就是一种。 void free(void *FirstByte): 该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。 2、函数的用法: 其实这两个函数用

qq_34272143的博客 2998

修正《啊哈算法》上模拟链表算法的错误

链表可以通过数组来实现,我们需要两个数组,其中一个数组data存放数据d即数据域。另外一个数组right用来存放每一个数的右边的数是谁,即指针域。    ...

GO追风少年 1095

简单易懂数据结构和算法--《啊哈!算法》--链表(指针实现)

导叙:根据啊哈磊老师的《啊哈!算法》整理的学习笔记,如有侵权,联系删除 图书链接:https://pan.baidu.com/s/18qNteKTnKJJpdo7Dks50FA 提取码:ym1t 关注微信公众“伊斯电子编程”获取更多资源 最后要将指针 q 也指向当前结点,因为待会儿临时指针 p 将会指向新创建的结点。 q=p;//指针q也指向当前结点 完整代码如下: #include ...

m0_46202433的博客 336

【C语言】 链表 超详细解析

【C语言】 链表 超详细解析

m0_56051805的博客 1万+

第15周 啊哈算法 链表:用指针链表和数组模拟链表

问题及代码: #include #include struct node { int date; struct node *next; }; int main() { struct node *head,*p,*q,*t; int i,a,n; head=NULL; scanf("%d",&n); for(i=1;i<=n;i

时缔&实验室 1391

链表处理详解

链表详解

m0_72674633的博客 1006

【C语言】free()函数详解(动态内存释放函数)

有关C语言库函数free()函数的详解,内容包括:函数简介,参数及返回值详解,函数的具体使用方法以及free()函数常见使用误区等相关内容.

C/C++领域,数据结构,linux,MySQl学习者 2万+

《啊哈,算法》代码优化

今天是2021.1.27,我在看一本叫做《啊哈,算法》的书,这本书的内容十分的基础且有趣,是一本很好的入门算法书,最近几天我都在看它,并且把书中的代码都敲了敲,发现有些代码有一点问题,在这里我作了一些修改。 目录第 2 章:栈、队列、链表第 4 节 链表(P44) 第 2 章:栈、队列、链表 第 4 节 链表(P44) 题目: 第一行给出一个整数n,第二行给出n个已经从小到大排好的数,第三行给出需要往这串数中插入的数a,输出仍符合从小到大排列的新的序列。 要求:不使用数组,使用链表 输入样例: 9

m0_51371779的博客 218

C语言使用free()函数释放链表节点时程序崩溃

在pinta上做题目:链式表操作集,编写程序后在VS2019平台下,程序发生运行崩溃。经过一步步调试发现,程序在运行调试到free()函数这一步时发生了崩溃。

qq_44948414的博客 2793
上一篇: C++char类型显示输出实际存储和判断相等
下一篇: 数组实现模拟链表及其理解
chenmozero
博客等级 码龄5年 2粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值