当前位置: 首页 > wzjs >正文

黄岛网站建设多少钱营销咨询顾问

黄岛网站建设多少钱,营销咨询顾问,重庆北碚网站制作,公众号做视频网站吗C语言-单链表的结构体定义 ⭐️ 一、单链表的结构体定义 🍭 typedef struct LNode { // 定义结构体 LNode,表示链表中的一个结点int data; // 数据域,存储结点的值struct LNode *next; // 指针域,指向下一个结点 } LN…

C语言-单链表的结构体定义 ⭐️

一、单链表的结构体定义 🍭

在这里插入图片描述

typedef struct LNode {  // 定义结构体 LNode,表示链表中的一个结点int data;           // 数据域,存储结点的值struct LNode *next; // 指针域,指向下一个结点
} LNode, *LinkList;     // 为结构体 LNode 定义两个别名:LNode 和 LinkList

代码功能说明: 🎀

  • 定义链表结点结构体:🍉
    • LNode 是链表中的一个结点,包含两个成员:👇🏻
      • data:存储结点的值(整数类型)。
      • next:指向下一个结点的指针。
  • 定义别名:🍉
    • LNode:表示一个链表结点。
    • LinkList:表示指向链表结点的指针(通常用于表示链表的头指针)。

代码逻辑详解: 🎀

  • 结构体定义:🍉
    • struct LNode 定义了一个链表结点的结构体。
    • data 是结点的数据域,用于存储整数值。
    • next 是结点的指针域,指向下一个结点。
  • 别名定义:🍉
    • typedefstruct LNode 定义了两个别名:
    • LNode:表示一个链表结点。
    • LinkList:表示指向链表结点的指针(通常用于表示链表的头指针)。

在这里插入图片描述

#include <stdio.h>  // 包含标准输入输出库,用于使用printf等函数
#include <stdlib.h> // 包含标准库函数,用于使用malloc等函数// 定义链表结点的结构体
typedef struct LNode {int data;           // 数据域,存储结点的值struct LNode *next; // 指针域,指向下一个结点
} LNode, *LinkList;     // 为结构体 LNode 定义两个别名:LNode 和 LinkList// 创建一个新结点
LNode *createNode(int data) {LNode *newNode = (LNode *)malloc(sizeof(LNode));  // 动态分配内存,创建一个新结点newNode->data = data;  // 设置新结点的数据域newNode->next = NULL;  // 设置新结点的指针域为NULLreturn newNode;        // 返回新结点的指针
}// 打印链表
void printList(LinkList L) {LNode *p = L;  // 定义指针p,指向链表的头结点while (p != NULL) {  // 遍历链表,直到p为NULLprintf("%d -> ", p->data);  // 打印当前结点的值p = p->next;  // 移动到下一个结点}printf("NULL\n");  // 打印链表结束标志
}int main() {// 创建链表 1 -> 2 -> 3 -> NULLLinkList L = createNode(1);  // 创建头结点,值为1L->next = createNode(2);     // 创建第二个结点,值为2L->next->next = createNode(3);  // 创建第三个结点,值为3// 打印链表printList(L);  // 调用printList函数,打印链表return 0;  // 程序正常结束
}

在这里插入图片描述

二、LNode *LinkList 的区别 🍭

在这里插入图片描述

// 【写法1】
LNode *p;
p = L -> next;// 【写法2】
LinkList p;
p = L -> next;
  • LNode侧重于表示链表中的每个结点;
  • LinkList侧重于表示一个链表。
    • 一般用头指针表示一个链表,比如:链表L 表示为:LinkList L;

LNode *LinkList 的区别主要体现在 语义 和 用法 上,尽管它们在语法上是等价的(都是指向 LNode 结构体的指针)。以下是它们的详细区别:👇🏻

(一)、 定义 📚
  • LNode *
    • 表示指向 LNode 结构体的指针。
    • 通常用于表示链表中的某个结点。
  • LinkList
    • LNode * 的别名,通过 typedef 定义。
    • 通常用于表示链表的头指针,强调链表的整体性。
(二)、 语义 🌲
  • LNode *
    • 强调指向某个具体的链表结点。
    • 适合用于操作链表中的某个结点(如插入、删除、遍历等)。
  • LinkList
    • 强调指向链表的头结点,表示整个链表。
    • 适合用于表示链表的整体(如创建链表、打印链表等)。
(三)、 用法 🪜

LNode *:用于操作链表中的某个结点。

示例: 🌰

LNode *p = head;  // p 指向链表的头结点
while (p != NULL) {printf("%d ", p->data);  // 打印当前结点的值p = p->next;  // 移动到下一个结点
}

LinkList:用于表示链表的头指针,通常用于函数参数或返回值。

示例: 🌰

LinkList createList() {LinkList L = (LNode *)malloc(sizeof(LNode));  // 创建头结点L->next = NULL;return L;  // 返回链表的头指针
}
(四)、 代码示例 🍪

以下是一个完整的代码示例,展示 LNode *LinkList 的用法: 👇🏻

#include <stdio.h>  // 引入标准输入输出库,用于使用 printf 等函数
#include <stdlib.h> // 引入标准库,用于使用 malloc 和 free 等函数// 定义链表结点结构体
typedef struct LNode {int data;              // 结点的数据域,存储整型数据struct LNode *next;    // 结点的指针域,指向下一个结点
} LNode, *LinkList;        // LNode 是结点类型,LinkList 是指向 LNode 的指针类型// 创建一个新结点
LNode *createNode(int data) {LNode *newNode = (LNode *)malloc(sizeof(LNode)); // 动态分配内存,创建一个新结点newNode->data = data;  // 设置新结点的数据域newNode->next = NULL;  // 初始化新结点的指针域为 NULLreturn newNode;        // 返回新结点的指针
}// 打印链表
void printList(LinkList L) {LNode *p = L;  // 初始化指针 p,指向链表的头结点while (p != NULL) {  // 遍历链表,直到链表结束printf("%d -> ", p->data);  // 输出当前结点的数据p = p->next;  // 移动到下一个结点}printf("NULL\n");  // 输出链表结束标志 NULL
}// 创建链表
LinkList createList() {LinkList L = createNode(0);  // 创建头结点,数据域为 0LNode *p = L;  // 初始化指针 p,指向链表的头结点for (int i = 1; i <= 3; i++) {  // 循环插入 3 个新结点p->next = createNode(i);  // 在链表尾部插入新结点p = p->next;  // 移动指针 p 到新插入的结点}return L;  // 返回链表的头指针
}int main() {LinkList L = createList();  // 创建链表printList(L);  // 打印链表// 释放链表内存LNode *p = L;  // 初始化指针 p,指向链表的头结点while (p != NULL) {  // 遍历链表,释放每个结点的内存LNode *temp = p;  // 临时指针 temp 指向当前结点p = p->next;  // 移动指针 p 到下一个结点free(temp);  // 释放当前结点的内存}return 0;  // 程序正常结束
}
0 -> 1 -> 2 -> 3 -> NULL
(五)、 总结 🌈
特性LNode *LinkList
定义指向 LNode 结构体的指针LNode * 的别名
语义强调指向某个具体的链表结点强调指向链表的头结点,表示整个链表
用法用于操作链表中的某个结点用于表示链表的头指针
适用场景遍历、插入、删除等操作创建链表、返回链表头指针等操作
  • LNode * 更适合用于操作 链表中的某个结点
  • LinkList 更适合用于表示 链表的整体(头指针)

在这里插入图片描述

http://www.dtcms.com/wzjs/117552.html

相关文章:

  • 网站开发环境怎么写长沙网站托管优化
  • 建设英文网站的请示天津百度快速优化排名
  • wordpress页面的添加海南seo快速排名优化多少钱
  • jsp动态网站开发实训心得北京网站优化策略
  • 商务网站建设的一般流程是什么意思整站seo技术
  • 今科网站建设公司梅州网络推广
  • wordpress ftp 设置windows优化大师的特点
  • php学校网站源码百度推广app怎么收费
  • h5页面可以跳转到小程序吗重庆网站seo建设哪家好
  • 深圳 seo 外贸网站建设 多语种百度搜索风云榜小说
  • 咸阳网站开发google play下载安装
  • 湛江建设工程交易中心网站百度站长工具seo查询
  • https网站建设花费百度关键词搜索优化
  • 顺义建站公司搜狗网址
  • 做爰全过程免费费网站网络seo啥意思
  • 建设商城网站费用如何把网站推广
  • 山西网站的公司谷歌账号
  • 记事本做网站代码重庆seo网站建设
  • 新网做网站怎么上传怎么优化推广自己的网站
  • 西安定制网站网络营销服务商
  • 网站上线之前做测试吗互联网运营
  • 互联网营销师培训基地seo网站关键词优化费用
  • wordpress cdn 回源量搜索引擎营销优化的方法
  • 光明随心订网站怎么做百度实名认证
  • 网店托管公司可靠吗百度seo优化按年收费
  • 万网购买网站大型网站建设
  • 网站开发与应用衡阳网站优化公司
  • wordpress安装配置澳门seo推广
  • 专注网站建设公司舆情分析网站
  • 网站优化的文章北京网络营销策划公司