创建链表和遍历链表算法演示

 

#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <stdlib.h>typedef struct Node {int data;  //数据域struct Node * pNext;   //指针域}Node, *pNode;//函数声明
pNode create_list();
void traverse_list(pNode  pHead);
int main(void) {pNode  pHead = NULL;   //等价于 struct Node *pHead=NULLpHead = create_list();    //create_list()创建一个非循环单链表,并将该链表的头结点的地址赋给pHeadtraverse_list(pHead);while(true){}return 0;
}//创建单链表
pNode create_list() {int len;   //用来存放有效节点数int i;int val; //存放用户临时输入的节点数据//我们首先要先生成一个头结点  不存放有效数据pNode pHead = (pNode)malloc(sizeof(Node));if (NULL == pHead) {printf("内存分配失败");//程序退出exit(-1);}pNode pTail = pHead;    //pTail也指向了头结点pTail->pNext = NULL;printf("请输入你要输入节点的个数 len =");scanf_s("%d", &len);//假设输入的长度5,我们需要循环for ( i = 0; i < len; i++){printf("请输入第%d个节点的值:", i + 1);scanf_s("%d", &val);pNode pNew=(pNode)malloc(sizeof(Node));if (NULL == pNew) {printf("内存分配失败");//程序退出exit(-1);}pNew->data = val;//pHead->pNext = pNew;//pNew->pNext = NULL;pTail->pNext = pNew;  //将这个新节点挂到尾节点,新节点最后一个节点pNew->pNext = NULL;   //将最后一个节点的指针域置空pTail = pNew;         //将新节点赋给最后的一个节点 pTail }return pHead;
}//遍历
void traverse_list(pNode  pHead) {pNode p = pHead->pNext;while (p!=NULL){printf("%d ",p->data);p = p->pNext;}//换行printf("\n");return;
}

求一个链表的长度和判断一个链表是否为空

#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <stdlib.h>typedef struct Node {int data;  //数据域struct Node * pNext;   //指针域}Node, *pNode;//函数声明
pNode create_list();
void traverse_list(pNode  pHead);bool is_empty(pNode pHead);          //判断链表是否为空
int length_list(pNode pHead);        //链表的长度
bool insert_list(pNode, int, int);   //插入  第一个参数表示插入的链表  第二个参数表示插入的位置  第三个参数表示插入的元素
bool delete_list(pNode, int, int *); //第一个参数表示要删除的位置,第二个参数表示要删除的位置 第三参数表示删除的元素的地址放入指针
void sort_list(pNode);int main(void) {pNode  pHead = NULL;   //等价于 struct Node *pHead=NULLpHead = create_list();    //create_list()创建一个非循环单链表,并将该链表的头结点的地址赋给pHeadtraverse_list(pHead);int len = length_list(pHead);printf("链表的长度%d\n", len);while(true){}return 0;
}//创建单链表
pNode create_list() {int len;   //用来存放有效节点数int i;int val; //存放用户临时输入的节点数据//我们首先要先生成一个头结点  不存放有效数据pNode pHead = (pNode)malloc(sizeof(Node));if (NULL == pHead) {printf("内存分配失败");//程序退出exit(-1);}pNode pTail = pHead;    //pTail也指向了头结点pTail->pNext = NULL;printf("请输入你要输入节点的个数 len =");scanf_s("%d", &len);//假设输入的长度5,我们需要循环for ( i = 0; i < len; i++){printf("请输入第%d个节点的值:", i + 1);scanf_s("%d", &val);pNode pNew=(pNode)malloc(sizeof(Node));if (NULL == pNew) {printf("内存分配失败");//程序退出exit(-1);}pNew->data = val;//pHead->pNext = pNew;//pNew->pNext = NULL;pTail->pNext = pNew;  //将这个新节点挂到尾节点pNew->pNext = NULL;pTail = pNew;}return pHead;
}//遍历
void traverse_list(pNode  pHead) {pNode p = pHead->pNext;while (p!=NULL){printf("%d ",p->data);p = p->pNext;}//换行printf("\n");return;
}//判断链表是否为空
bool is_empty(pNode pHead) {if (NULL == pHead->pNext) {return true;}else {return false;}
}//求一个链表的长度
int length_list(pNode pHead) {pNode p=pHead->pNext;   //第一个节点int len = 0;while (NULL != p) {   //只要指针指向的下一个元素不是空,指针就继续向后移动++len;p=p->pNext;}return len;
}

 

 

算法:
狭义的算法是与数据的存数方式密切相关
广义的算法是与数据的存储方式无关
泛型:
利用某种技术达到的效果就是:不同的存数方式,执行的操作是一样的

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576377.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

@Autowired、@Resource

Autowired通过 Autowired的使用来消除 set &#xff0c;get方法 - Spring 2.5 JPA hibernate 使用方法的点滴整理我们编写spring 框架的代码时候。一直遵循是这样一个规则&#xff1a;所有在spring中注入的bean 都建议定义成私有的域变量。并且要配套写上 get 和 set方法。虽然…

SpringCloud 入门教程(七): 熔断机制 -- 断路器

对断路器模式不太清楚的话&#xff0c;可以参看另一篇博文&#xff1a;断路器&#xff08;Curcuit Breaker&#xff09;模式&#xff0c;下面直接介绍Spring Cloud的断路器如何使用。 SpringCloud Netflix实现了断路器库的名字叫Hystrix. 在微服务架构下&#xff0c;通常会有多…

ABTest系统调研和需求

一、AB测试的必要性 1.1 算法评估 线下可以使用离线的AUC&#xff0c;NDCG等指标进行算法模型的评估&#xff0c;算法上线后怎样进行算法间的评估&#xff0c;上线的算法是好是坏&#xff0c;好多少&#xff1f;坏多少&#xff1f; 要有效评估算法&#xff0c;必须借助AB测试…

SpringCloud 入门教程(八): 断路器指标数据监控Hystrix Dashboard 和 Turbine

1. Hystrix Dashboard (断路器&#xff1a;hystrix 仪表盘) Hystrix一个很重要的功能是&#xff0c;可以通过HystrixCommand收集相关数据指标. Hystrix Dashboard可以很高效的现实每个断路器的健康状况。 1&#xff09;. 在Ribbon服务g和Feign服务的Maven工程的pom.xml中都加…

SpringCloud 入门教程(九): 路由网关zuul

在微服务架构中&#xff0c;需要几个关键的组件&#xff0c;服务注册与发现、服务消费、负载均衡、断路器、智能路由、配置管理等&#xff0c;由这几个组件可以组建一个简单的微服务架构。客户端的请求首先经过负载均衡&#xff08;zuul、Ngnix&#xff09;&#xff0c;再到达服…

33岁的互联网人,看看我自己做了什么?

一、2021年之前 2020年8月中&#xff0c;从一家上市互联网公司离职&#xff0c;离职的原因和其中发生的一些事情也是一言难尽。感谢我当时的直属领导lfp和上层领导zjs&#xff0c;他们教会了我不少的东西&#xff0c;到现在都还有和他们联系&#xff0c;也很感谢我的同事&…

SpringCloud 入门教程(十):和RabbitMQ的整合 -- 消息总线Spring Cloud Netflix Bus

在本教程第三讲Spring Cloud 入门教程(三)&#xff1a; 配置自动刷新中&#xff0c;通过POST方式向客户端发送/refresh请求&#xff0c; 可以让客户端获取到配置的最新变化。但试想一下&#xff0c; 在分布式系统中&#xff0c;如果存在很多个客户端都需要刷新改配置&#xff0…

SpringCloud Eureka参数配置项详解

Eureka涉及到的参数配置项数量众多&#xff0c;它的很多功能都是通过参数配置来实现的&#xff0c;了解这些参数的含义有助于我们更好的应用Eureka的各种功能&#xff0c;下面对Eureka的配置项做具体介绍&#xff0c;供大家参考。 Eureka客户端配置 1、RegistryFetchIntervalSe…

OAuth 2.0 - Authorization Code授权方式详解

I:OAuth 2.0 开发前期准备 天上不会自然掉馅饼让你轻松地去访问到人家资源服务器里面的用户数据资源&#xff0c;所以你需要做的前期开发准备工作就是把AppKey, AppSecret取到手 新浪获取传送门&#xff0c;腾讯获取传送门 这里说一下&#xff0c;在申请AppKey和AppSecret的过程…

最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(Finchley版本)

一、spring cloud简介 鉴于《史上最简单的Spring Cloud教程》很受读者欢迎&#xff0c;再次我特意升级了一下版本&#xff0c;目前支持的版本为Spring Boot版本2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE。 Finchley版本的官方文档如下&#xff1a; http://cloud.spri…

最简单的SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)(Finchley版本)

在上一篇文章&#xff0c;讲了服务的注册和发现。在微服务架构中&#xff0c;业务都会被拆分成一个独立的服务&#xff0c;服务与服务的通讯是基于http restful的。Spring cloud有两种服务调用方式&#xff0c;一种是ribbonrestTemplate&#xff0c;另一种是feign。在这一篇文章…

链表选择排序算法功能实现演示

算法: 狭义的算法是与数据的存数方式密切相关 广义的算法是与数据的存储方式无关 泛型: 利用某种技术达到的效果就是:不同的存数方式&#xff0c;执行的操作是一样的 #include <stdio.h> #include <malloc.h> #include <string.h> #include <stdlib.h&g…

链表插入功能实现演示

#include <stdio.h> #include <malloc.h> #include <string.h> #include <stdlib.h>typedef struct Node {int data; //数据域struct Node * pNext; //指针域}Node, *pNode;//函数声明 pNode create_list(); void traverse_list(pNode pHead); …

【.NET程序性能分析】使用VS自带的工具分析.NET程序的性能

这篇博文给大家分享的是&#xff0c;如何使用VS自带的性能分析工具来分析我们编写的.NET程序&#xff0c;一边找出程序性能的瓶颈&#xff0c;改善代码的质量。在实际开发中&#xff0c;性能真的很重要&#xff0c;往往决定一个产品的生死~良好的用户体验的基础之一也是程序要有…

链表删除功能实现演示

插入算法和删除演示&#xff1a; #include <stdio.h> #include <malloc.h> #include <string.h> #include <stdlib.h>typedef struct Node {int data; //数据域struct Node * pNext; //指针域}Node, *pNode;//函数声明 pNode create_list(); void …

栈入门

线性结构的两种常见应用之一栈 定义&#xff1a;一种可以实现”先进后出”的存储结构&#xff0c;栈类似于箱子 分类&#xff1a;静态栈、动态栈 算法&#xff1a;出栈、压栈 栈的定义&#xff1a; 栈&#xff08;stack&#xff09;又名堆栈&#xff0c;它是一种运算受限的线性…

Packet Tracer 5.0实验(四) 利用三层交换机实现VLAN间路由

一、实验目标 掌握交换机Tag VLAN 的配置&#xff1b;掌握三层交换机基本配置方法&#xff1b;掌握三层交换机VLAN路由的配置方法&#xff1b;通过三层交换机实现VLAN间相互通信&#xff1b;二、实验背景 某企业有两个主要部门&#xff0c;技术部和销售部&#xff0c;分处于不同…

栈程序演示

#include <stdio.h> #include <malloc.h> #include <stdlib.h>typedef struct Node{int data;struct Node * pNext; }NODE,*PNODE;typedef struct Stack{PNODE pTop; //栈顶元素PNODE pBottom; //栈底部元素 }STACK,*PSTACK;void init(PSTACK); v…

noi 2009 二叉查找树 动态规划

思路&#xff1a; 先把权值离散化 按数据值排序 sum[i]为前i个节点频度和 dp[i][j][w]表示把节点[i,j]合并成一颗根节点权值不小于w的子树所需的访问代价与修改代价的最小和 dp[i][j][w]min(dp[i][k-1][w]dp[k1][j][w]sum[j]-sum[i-1]K,dp[i][k-1][a[k].weight]dp[k1][j][a[k].…