C语言链表实现(郝斌数链表学习笔记)
#include "stdafx.h"
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int data ;//数据域
struct Node * pNext; //指针域 这个指针域它指向的是跟它本身一样的数据类型的另一个节点
}NODE,*PNODE; //NODE等价于struct Node PNODE等价于struct Node*
PNODE create_list(void);
void traverse_list(PNODE pHead);
bool is_empty(PNODE pHead);
int length_list(PNODE);
bool insert_list(PNODE,int,int);
bool delete_list(PNODE,int ,int*);
//动态分配的内存
int main(int argc, char* argv[])
{
PNODE pHead = NULL; //等价于struct Node * pHead = Null 头节点
pHead = create_list();//create_list():创建一个非循环单链表,并将该链表的头节点的地址赋给pHead
traverse_list(pHead);
system("pause");
return 0;
}
PNODE create_list(void)//返回类型为地址 PNODE = struct Node*
{
int len;//用来存放有效结点的个数
int i;
int val;//用来临时存放用户输入的结点的值
//分配了一个不存放有效数据的头节点,不能叫头指针
PNODE pHead = (PNODE)malloc(sizeof(NODE));//分配头节点的首地址给了pHead PNODE = struct Node*
if (NULL==pHead)
{
printf("分配失败,程序失败!");
exit(-1);
}
PNODE pTail = pHead; //尾结点 初始化
pTail->pNext = NULL; //用来清空尾结点的指针域
printf("请输入您需要生成的链表节点的个数:len = \n");
scanf("%d",&len);
for( i = 0; i<len;++i)
{
printf("请输入第%d个节点的值",i+1);
scanf("%d",&val);
PNODE pNew = (PNODE)malloc(sizeof(NODE));// PNODE等价于struct Node*
if(NULL==pNew)
{
printf("分配失败,程序终止");
}
pNew->data =val;// 将变量值赋值到结点的数据域当中
pTail->pNext = pNew; //将新的结点挂到尾结点
pNew->pNext = NULL;
pTail = pNew;
}
return pHead;
}
void traverse_list(PNODE pHead)
{ //链表不能用数组来遍历
PNODE p = pHead->pNext; //p指向第一个有效结点
while (NULL!=p)
{
printf("%d ",p->data);
p = p->pNext;
}
printf("\n");
return ;
}
C语言链表实现(郝斌数链表学习笔记)的更多相关文章
- 郝斌–SQL Server2005学习笔记
数据库(Database)狭义上是指存储数据的仓库,广义上包含对数据进行存储和管理的软件(DBMS)和数据本身.数据库由表.关系和操作组成. 一.数据库简介 1.为什么需要数据库 数据库简化了对数据的 ...
- Go语言核心36讲(导读)--学习笔记
目录 开篇词 | 跟着学,你也能成为Go语言高手 导读 | 写给0基础入门的Go语言学习者 导读 | 学习专栏的正确姿势 开篇词 | 跟着学,你也能成为Go语言高手 Go 语言是由 Google 出品 ...
- Go语言核心36讲(Go语言实战与应用十五)--学习笔记
37 | strings包与字符串操作 Go 语言不但拥有可以独立代表 Unicode 字符的类型rune,而且还有可以对字符串值进行 Unicode 字符拆分的for语句. 除此之外,标准库中的un ...
- 数模学习笔记(五)——BP神经网络
1.BP神经网络是一种前馈型网络(各神经元接受前一层的输入,并输出给下一层,没有反馈),分为input层,hide层,output层 2.BP神经网络的步骤: 1)创建一个神经网络:newff a.训 ...
- Go语言核心36讲(Go语言实战与应用十二)--学习笔记
34 | 并发安全字典sync.Map (上) 我们今天再来讲一个并发安全的高级数据结构:sync.Map.众所周知,Go 语言自带的字典类型map并不是并发安全的. 前导知识:并发安全字典诞生史 换 ...
- Go语言核心36讲(Go语言实战与应用十四)--学习笔记
36 | unicode与字符编码 在开始今天的内容之前,我先来做一个简单的总结. Go 语言经典知识总结 在数据类型方面有: 基于底层数组的切片: 用来传递数据的通道: 作为一等类型的函数: 可实现 ...
- Go语言核心36讲(Go语言实战与应用十六)--学习笔记
38 | bytes包与字节串操作(上) 前导内容: bytes.Buffer基础知识 strings包和bytes包可以说是一对孪生兄弟,它们在 API 方面非常的相似.单从它们提供的函数的数量和功 ...
- Go语言核心36讲(Go语言实战与应用十八)--学习笔记
40 | io包中的接口和工具 (上) 我们在前几篇文章中,主要讨论了strings.Builder.strings.Reader和bytes.Buffer这三个数据类型. 知识回顾 还记得吗?当时我 ...
- Go语言核心36讲(Go语言实战与应用二十)--学习笔记
42 | bufio包中的数据类型 (上) 今天,我们来讲另一个与 I/O 操作强相关的代码包bufio.bufio是"buffered I/O"的缩写.顾名思义,这个代码包中的程 ...
- Go语言核心36讲(Go语言实战与应用二十一)--学习笔记
43 | bufio包中的数据类型(下) 在上一篇文章中,我提到了bufio包中的数据类型主要有Reader.Scanner.Writer和ReadWriter.并着重讲到了bufio.Reader类 ...
随机推荐
- Python argparse参数管理学习笔记1
1.前言 最近尝试学习使用argparse进行参数管理,顺便改善一下我那丝毫都不专业的.简单粗暴的代码习惯. argparse模块可以让人轻松地编写用户友好地命令行接口,并且还能够自动生成帮助与使用手 ...
- Pillow + pytesseract + tesseract-ocr 破解简单的图形验证码
前言: 我们在做WEB UI自动化测试时,会遇到一些图形验证码,今天就来简单介绍下,如何来识别简单的图形验证码. 一.安装 ◇ Pillow pip3 install Pillow ◇ pytesse ...
- 【保姆级教程】如何用Rust编写一个ChatGPT桌面应用
为什么我们需要一个桌面应用 原因实在太多,我们需要便捷地导出记录,需要在回答长度超长的时候自动加上"继续",需要收藏一些很酷很实用的prompt...... (首先我假设你是一名如 ...
- Django4全栈进阶之路10 url路由设置
在 Django 4 中,可以在主路由文件中设置和管理子路由.通常,我们会为每个应用程序创建一个子路由文件,以便更好地组织代码和管理路由. 以下是 Django 4 中设置主路由和子路由的示例: 首先 ...
- drf——Request源码分析、序列化组件、序列化类的使用(字段类和参数)、反序列化校验和保存
1.Request类源码分析 # APIView+Response写个接口 # 总结: 1.新的request有个data属性,以后只要是在请求body体中的数据,无论什么编码格式,无论什么请求方式 ...
- XAF Excel Importer
开源项目地址:https://gitee.com/easyxaf/excel-importer 前言 在XAF中有Excel导出,但没有Excel导入,一开始不理解,难道Excel导入很难实现吗,当我 ...
- Updates were rejected because the tip of your current branch is behind
最近本地一个flutter项目因为当时使用可视化创建的时候出了一些问题,但是起初没有注意,后来因为需要新增一个语音插件,需要修改原生android MainActivity.java,才发现这个目录根 ...
- MYSQL数据库的创建和删除
打开Windows命令行,输入登录用户和密码 mysql -h localhost -u root -p 创建新数据 CREATE DATABASE zoo; 查看系统中的数据库 SHOW DATAB ...
- odoo总结---类继承和视图继承
类继承 自从有了类,就有继承,继承是类最大的特性,ODOO开发有不例外,先ODOO集采总结如下: 1)类继承:扩展类中没有_name属性,因为它继承了父类的_name.对现有模型的扩展, 添加新功能, ...
- 生信入门必须掌握的 30 个 Linux 命令
学习生物信息,Linux 是必须掌握的内容,其实常用的 Linux 命令也就 30 个左右,而且这些命令都是单词的简写,记忆起来并不困难.这里列出了常用的 30 个命令. 1. cd Change d ...