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

怎么注册晋江网站做的从网页上直接下载视频

怎么注册晋江网站做的,从网页上直接下载视频,淘宝引流到微信推广方法,南阳网站建设xihewh链表 介绍单向链表节点结构创建节点插入节点删除节点遍历链表尾部插入查找节点链表反转示例程序程序1程序2 介绍 链表是一种常见的数据结构#xff0c;用于存储一系列线性数据。与数组不同#xff0c;链表中的元素在内存中不必是连续存放的#xff0c;而是通过指针将每个元… 链表 介绍单向链表节点结构创建节点插入节点删除节点遍历链表尾部插入查找节点链表反转示例程序程序1程序2 介绍 链表是一种常见的数据结构用于存储一系列线性数据。与数组不同链表中的元素在内存中不必是连续存放的而是通过指针将每个元素节点链接在一起。链表有很多种类型例如单向链表、双向链表和循环链表。这里我们主要介绍单向链表。 单向链表 单向链表由一系列节点组成每个节点包含两个部分 数据部分存储节点的实际内容。指针部分存储指向下一个节点的指针。 节点结构 在 C 语言中我们可以通过定义一个结构体来表示链表的节点 struct Node {int data; // 数据部分struct Node* next; // 指针部分 };创建节点 可以通过动态内存分配函数 malloc 来创建新节点 #include stdio.h #include stdlib.h// 定义节点结构 struct Node {int data;struct Node* next; };// 创建新节点 struct Node* createNode(int data) {struct Node* newNode (struct Node*)malloc(sizeof(struct Node));if (!newNode) {printf(内存分配失败\n);exit(1);}newNode-data data;newNode-next NULL;return newNode; }插入节点 我们可以在链表的头部或尾部插入节点。以头部插入为例 // 头部插入 void insertAtHead(struct Node** head, int data) {struct Node* newNode createNode(data);newNode-next *head;*head newNode; }删除节点 删除链表中的节点也很常见。假设我们要删除值为 key 的节点 void deleteNode(struct Node** head, int key) {struct Node* temp *head;struct Node* prev NULL;// 如果头节点本身就是要删除的节点if (temp ! NULL temp-data key) {*head temp-next;free(temp); // 释放内存return;}// 搜索要删除的节点while (temp ! NULL temp-data ! key) {prev temp;temp temp-next;}// 如果没找到要删除的节点if (temp NULL) return;// 断开链接并释放内存prev-next temp-next;free(temp); }遍历链表 遍历链表可以通过循环来实现 void printList(struct Node* head) {struct Node* current head;while (current ! NULL) {printf(%d - , current-data);current current-next;}printf(NULL\n); }尾部插入 尾部插入与头部插入类似我们需要找到链表的最后一个节点然后将新节点添加到末尾。 // 尾部插入 void insertAtTail(struct Node** head, int data) {struct Node* newNode createNode(data);if (*head NULL) {*head newNode;return;}struct Node* temp *head;while (temp-next ! NULL) {temp temp-next;}temp-next newNode; }查找节点 查找链表中的某个节点返回其位置或者指针 struct Node* searchNode(struct Node* head, int key) {struct Node* current head;while (current ! NULL) {if (current-data key) {return current;}current current-next;}return NULL; // 未找到 }链表反转 反转链表是一个经典的问题可以通过迭代的方式实现 void reverseList(struct Node** head) {struct Node* prev NULL;struct Node* current *head;struct Node* next NULL;while (current ! NULL) {next current-next; // 暂存下一个节点current-next prev; // 反转当前节点的指针prev current; // 移动 prev 指针current next; // 移动 current 指针}*head prev; }示例程序 程序1 #include stdio.h #include stdlib.hstruct Node {int data;struct Node* next; };struct Node* createNode(int data) {struct Node* newNode (struct Node*)malloc(sizeof(struct Node));if (!newNode) {printf(内存分配失败\n);exit(1);}newNode-data data;newNode-next NULL;return newNode; }void insertAtHead(struct Node** head, int data) {struct Node* newNode createNode(data);newNode-next *head;*head newNode; }void deleteNode(struct Node** head, int key) {struct Node* temp *head;struct Node* prev NULL;if (temp ! NULL temp-data key) {*head temp-next;free(temp);return;}while (temp ! NULL temp-data ! key) {prev temp;temp temp-next;}if (temp NULL) return;prev-next temp-next;free(temp); }void printList(struct Node* head) {struct Node* current head;while (current ! NULL) {printf(%d - , current-data);current current-next;}printf(NULL\n); }int main() {struct Node* head NULL;insertAtHead(head, 1);insertAtHead(head, 2);insertAtHead(head, 3);printf(Created Linked List: );printList(head);deleteNode(head, 2);printf(Linked List after deletion of 2: );printList(head);return 0; }输出结果 程序2 #include stdio.h #include stdlib.h// 定义节点结构 struct Node {int data;struct Node* next; };// 创建新节点 struct Node* createNode(int data) {struct Node* newNode (struct Node*)malloc(sizeof(struct Node));if (!newNode) {printf(内存分配失败\n);exit(1);}newNode-data data;newNode-next NULL;return newNode; }// 头部插入 void insertAtHead(struct Node** head, int data) {struct Node* newNode createNode(data);newNode-next *head;*head newNode; }// 尾部插入 void insertAtTail(struct Node** head, int data) {struct Node* newNode createNode(data);if (*head NULL) {*head newNode;return;}struct Node* temp *head;while (temp-next ! NULL) {temp temp-next;}temp-next newNode; }// 删除节点 void deleteNode(struct Node** head, int key) {struct Node* temp *head;struct Node* prev NULL;if (temp ! NULL temp-data key) {*head temp-next;free(temp);return;}while (temp ! NULL temp-data ! key) {prev temp;temp temp-next;}if (temp NULL) return;prev-next temp-next;free(temp); }// 查找节点 struct Node* searchNode(struct Node* head, int key) {struct Node* current head;while (current ! NULL) {if (current-data key) {return current;}current current-next;}return NULL; }// 反转链表 void reverseList(struct Node** head) {struct Node* prev NULL;struct Node* current *head;struct Node* next NULL;while (current ! NULL) {next current-next;current-next prev;prev current;current next;}*head prev; }// 打印链表 void printList(struct Node* head) {struct Node* current head;while (current ! NULL) {printf(%d - , current-data);current current-next;}printf(NULL\n); }int main() {struct Node* head NULL;insertAtHead(head, 1);insertAtHead(head, 2);insertAtHead(head, 3);printf(初始链表: );printList(head);// 测试尾部插入insertAtTail(head, 4);printf(尾部插入 4 后的链表: );printList(head);// 测试删除节点deleteNode(head, 2);printf(删除节点 2 后的链表: );printList(head);// 测试查找节点struct Node* foundNode searchNode(head, 3);if (foundNode) {printf(找到节点 3\n);} else {printf(未找到节点 3\n);}// 测试反转链表reverseList(head);printf(反转后的链表: );printList(head);return 0; }输出结果
http://www.hkea.cn/news/14287621/

相关文章:

  • 建个网站的流程寮步建设网站
  • 做外贸的免费网站赤壁市药监局网站建设方案
  • 入侵织梦网站后台平原县网站seo优化排名
  • 济南能源建设网站中国核工业华兴建设有限公司
  • 温州网站建设服务电子商务网络公司做网站用什么格式做好
  • 网盘怎么做电影网站衡水做网站报价
  • asp开源企业网站教程金华网络公司网站建设
  • pos机网站建设方案电商网站建设懂你所需
  • 高效网站建设咨询郑州上市企业网站建设
  • 网站支付怎么做的云南昆明百度推广公司
  • 山西省这房和城乡建设厅网站广东省深圳建设信息网官网
  • 中小企业建网站注意磁力宅
  • 商业网站策划书范文西安网站设计建设公司 交通
  • 自己建立网站要钱吗要找人做公司网站应该怎么做
  • 肇庆网站开发公司wordpress图片素材主题
  • 网站icp备案费用网站与规划设计思路
  • 廉江市住房和城乡规划建设局网站电子商务平台自身提供的数据工具
  • 个人网站 备案备注网站的模板管理
  • 中国河北网站荥阳seo
  • 优秀网站及网址网站开发自学流程
  • 宁波网站排名优化报价农业机械网站模板
  • 南昌seo网站管理公司官网制作多少钱
  • 建站一条龙网站开发概要设计书模板
  • 怎样从用户体现提高网站的搜索引擎信任度在线查企业
  • 跟我学做纸艺花网站网站底部 设计
  • 虚拟主机管理怎么做网站网站内容维护有哪些方面
  • 周口学做网站购物网站开发 需求分析
  • 从做系统找不到以前的网站网站设计 论坛
  • 朔州怀仁网站建设wordpress国旗按钮
  • 网站上的图片带店面是怎么做的门户一号wordpress主题