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

专做PPP项目网站制作自己的网站

专做PPP项目网站,制作自己的网站,网站产品怎么改顺序,翻译网站怎么做目录 目录 前言 正文 链表定义: 基本创建链表程序: 链表结点插入: 对角线记忆法: 画图理解法: 链表结点删除: 链表销毁: 后语 前言 链表理解方法分享,愿你的大脑也能建立一个…

目录

       

目录

前言

正文

链表定义:

基本创建链表程序:

链表结点插入:

 对角线记忆法:

画图理解法:

链表结点删除:

链表销毁:

  后语



前言

        链表理解方法分享,愿你的大脑也能建立一个链表的指针!


正文

链表定义:

为什么要熟悉定义,总感觉对理解链表会有帮助的。
链表是什么?链表是C 高级编程核心。高级编程诶,开不开心!

链表是相对数组而言的,之所以需要链表是因为数组有缺点。

对于链表而言,最要命的其实不是庞大的代码量,而是逻辑。(就像接电路一样,搞不懂逻辑,看别人继电器之间互锁自锁,就像给自己大脑上了一把锁)

链表是N个结点离散分配,彼此通过指针相连,除头结点与尾结点外,中间的每个结点只有一个前去结点和一个后续结点, 头结点没有前驱结点,尾结点没有后续结点。

一堆鬼文字只能辅助理解(大部分摘自《手把手教你C语言》)。

基本创建链表程序:

就像当初学编程从输出“hello,world”一样,理解创建链表的过程很重要,是基础中的基础,这个搞定后,后面的一系列删除、插入等就不是问题了(的确没那么难理解了)。

//#define NDEBUG#include <stdio.h>
#include <stdlib.h>#include "dbg.h"typedef struct node{char *data;struct node  *next;
}Sn;//结构体类型通常首字母大写。
Sn *create_list(void); 
void print(Sn *list);int main(int argc, char *argv[])
{Sn *list;list = create_list();print(list);while(list !=NULL){Sn *tmp = list;list = list->next;free(tmp);}return 0;
}Sn *create_list(void)
{int i;int num;Sn *head = malloc(sizeof(*head));Sn *move = head; //这是head的秘书debug("%p", move);check_mem(head);printf("你想输入几条数据?\n:");scanf("%d", &num);getchar();for (i=0; i<num; i++){Sn *fresh= malloc(sizeof(*fresh));char *tmp = malloc(sizeof(tmp));check_mem(fresh);printf("请输入第%d条数据", i+1);scanf("%s", tmp);getchar();fresh->data = tmp;fresh->next = NULL;move->next = fresh;move = fresh;debug("%p", move);}return head;
error:exit(-1);
}void print(Sn *list)
{Sn *move = list;debug("%p", move);printf("你输入的数据是:");while(move->next !=NULL){printf("%s", move->next->data);move= move->next;debug("%p", move);}printf("\n");
}

链表结点插入:

 对角线记忆法:

对角线大家都知道,怎么结合程序理解记忆呢?如

fresh->next = move->next;
move->next = fresh
画图理解法:

如果以上感觉还是不理解,脑袋里绕不过来,那就拿笔在纸上画画。

如图,假设原来只有move及move->next两块内存,现在要插入fresh,那么就要先让fresh的next指针指向fmovenext,然后movenext指向fresh。顺序不要错,不然报错为定义。

        其实搞懂链表创建之后,其它的理解起来也就没那么难了,再看下删除吧。

链表结点删除:

void delete(Sn *head)
184 {
185     char num[20] = "\0";
186     printf("Select the num to delete: ");
187     Sn *save = malloc(sizeof(*save));
188     Sn *move = head;
189     scanf("%s", num);
190     while(move->next != NULL){
191         if(strcmp(num, move->next->num)== 0){
192             save = move->next;
193             move->next =  move->next->next;
194             free(save);
195             save = NULL;
196         }
197         move = move->next;
198     }
199     printf("dielet it!");
200    }
201//间隔一段时间再看,我又用笔画了画才理解,也许我该放弃了?

链表销毁:

         

while(head != NULL){save = head->next;free(head);head = save;
}

    所以你废了吗?


  后语

  1. 本以为我已经已如道,可以闭关修炼了。结果在即将道基崩塌的一刻,幡然醒悟,我已再次入魔!浮躁不知不觉又侵占吾身,特开此篇,抑制心魔,与尔共勉!——20240702

  2. 修真小说看多了,大脑总喜欢把C语言与 修真联想。以下是部分狂想曲:链表是金丹之锁,打破它,才能成为高手。指针之前是寻找气感,理解指针进入练气,然后经过later……以后,锁链出现了。

    哦,掌握它得的过程就是破丹期!打破了才是新生,打不破就是个蛋!

  3. 一不小心已经过去了一个月了,尽管有别的事情,但是更多的说明链表不愧是高级部分,自学表示真的很难——2024/7/27

      4.手把手的吴明杰说,实在搞不懂就记住吧  。我正在用这个方法!

http://www.mmbaike.com/news/103707.html

相关文章:

  • 用织梦做网站有后台吗seo优化是利用规则提高排名
  • 网赌网站国外空间线上引流的八种推广方式
  • 淮安汽车集团网站建设想做电商怎么入手
  • 企业网站模板下载高中同步测控优化设计答案
  • 怎么做微网站网络营销第三版课本
  • 海外网站推广方法广告优化师怎么学
  • 网站建设和网站自己做网站设计制作
  • 网站建设方案及预算浏览器里面信息是真是假
  • 荔湾建网站公司在线资源链接
  • 网站后台打开慢可以免费网络推广网站
  • 苏州网站设计公司兴田德润i网址多少长沙网红打卡景点排行榜
  • drupal 网站建设企业培训考试
  • 做数码测评的网站江门seo
  • 团结湖网站建设广州竞价托管代运营
  • 美颜秘籍网站建设优化整站
  • 传奇类网页游戏太原seo报价
  • 手机端网站开发要注意什么南宁推广软件
  • 网站首页一般做多大尺寸联盟营销平台
  • 做网站要用服务器维护seo霸屏软件
  • 百度推广做网站吗清远今日头条新闻
  • 滕州建网站关键词搜索量全网查询
  • 广州网站建设新际网上在线看视频为什么卡
  • 简单公司网站怎样自己制作网站
  • 从化商城网站建设网络营销的八种方式
  • 电脑路由器做网站服务器网站快速建站
  • 网站如何做脚注seo 网站推广
  • 做网站学的是代码吗sem培训班
  • 做网站开发的商标注册嘉兴seo排名外包
  • 网站建设高端定制市场调研的四个步骤
  • 白云怎样优化网站建设游戏交易平台