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

线性表->链表(数据结构)

1.头文件

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h> //在现代 C 编程中,通常不再使用 malloc.h 头文件。相反,标准库头文件 stdlib.h 包含了动态内存分配函数的声明,例如 malloc、calloc、realloc 和 free。

2.创建新链表

typedef struct Node{int data;//存储节点的数据struct Node* next; //结构体中的另一个成员变量,类型为指向 struct Node 的指针,用于指向链表中的下一个节点。这个指针使得结构体可以用于构建链表。}Node;//束结构体定义,并使用 typedef 为 struct Node 创建一个别名 Node。
//这样可以直接使用 Node 作为类型,而不需要每次都写 struct Node。

3.初始化链表

  • 这段代码定义了一个函数 InitList,用于初始化一个链表。
  • 它分配了一个 Node 结构体的内存,将其 next 指针设置为 NULL,并返回这个新创建的头节点。
  • 这个函数的作用是创建一个空链表,并返回链表的头节点,以便后续操作。
Node* InitList(){Node*head=(Node*)malloc(sizeof(Node));head->next=NULL;return head;
}

4.尾插法

void CreatTail(Node* head,int n){Node* p=head;int input;for(int i=0;i<n;i++){scanf("%d",&input);Node* q=(Node*)malloc(sizeof(Node));q->data=input;q->next=NULL;p->next=q;p=q;}
}

5.链表逆置

int reverse(Node* head){if(head==NULL||head->next==NULL){return 0;}Node*p=head->next;Node*q=p-next;Node*r;while(q){r=q->next;q->next=p;p=q;q=r;}
}

6.打印代码(以:“输出插入后的链表数据,以空格分开。行末没有多余空格”为例)

int print(Node* head){Node* p=head->next;while(p){if(p->next==NULL){printf("%d\n",p->data);}else{printf("%d ",p->data);}p=p->next;}return 0;
}

7.从链表里按顺序插入一个元素

int Insert(Node* head){int ins,flag;getchar();scanf("&d",&ins);printf("ins=%d\n",ins);Node *pa=head->next;Node *pb=(Node*)malloc(sizeof(Node));pb->data=ins;flag=1;//判断列表是否为空if(pa==NULL){head->next=pb;pb->next=NULL;return 0;}//判断插入位置//flag判断插入位置是否为第一个while(pa->next!=NULL){if((pa->data<ins) && (pa->next->data>ins)){//插入位置在中间pb->next=pa->next;pa->next=pb;return 1;}else if(ins<pa->data && flag==1){//插入位置在第一个pb->next=head->next;//pb指向head->next的结点head->next=pb;//让head->next指向pb,使之连起return 2;}else pa = pa->next;flag=0;if(ins>pa->data){//插入位置在最后一个pa->next=pb;pb->next=NULL;return 3;}}return -1;}


http://www.mrgr.cn/news/58501.html

相关文章:

  • 中职/高职院校如何利用上进双创工作室来应对世界职业院校技能大赛带来的规则变化
  • paddleocr使用FastDeploy 部署工具部署 rknn 模型
  • List、Map
  • 基于RK3588/算能BM1684 AI盒子:综合视频智能AI分析系统建设方案(二)烟火检测、物品遗留、车道占用
  • leetcode动态规划(八)-不同的二叉搜索树
  • Angular 框架入门教程:从安装到路由、服务与状态管理详解
  • 在Android开发中WebView的详细使用方法
  • 【日常记录-Java】可变长度参数
  • 写导出接口的一些理解
  • lazada 商品详情 API 的获取与应用
  • python调用PIL库处理图片
  • JS轮播图实现自动轮播、悬浮停止轮播、点击切换,下方指示器与图片联动效果
  • 【人工智能】——matplotlib教程
  • 广州企业管理咨询公司排名前十
  • 大尺寸反射式液晶显示模块行业分析:预计2030年全球市场规模将达到2,020.21百万美元
  • echarts给Y轴的不同轴线设置不同的颜色的样式
  • 【OpenAI】第二节(Token)关于ChatGPT的Token你了解多少?最全Token讲解过程!
  • SpringMVC8-HttpMessageConverter
  • 《企业自设2-软件测试》搭建locust环境+使用它搜索百度接口
  • 在Flutter中实现排行榜滑动阻尼效果
  • 大家都在用的HR招聘管理工具:国内Top5排名
  • 免费开源!语音识别平台让医疗对话更高效,沟通更准确
  • xtu oj 字母序列
  • 时间数据可视化基础实验(南丁格尔玫瑰图)——Python热狗大胃王比赛数据集
  • 网站建设中需要注意哪些安全问题?----雷池社区版
  • 达梦数据库基本操作指南:从表空间创建到触发器应用