C语言单链表遍历与求和示例解读

目录
  • 单链表的遍历
  • 单链表的求和

单链表的遍历

描述:

牛牛从键盘输入一个长度为 n 的数组,问你能否用这个数组组成一个链表,并顺序输出链表每个节点的值。

输入描述:

第一行输入一个正整数 n ,表示数组的长度

第二行输入n个数据

输出描述:

制作一个链表然后输出这个链表的值

输入:

4 5 4 2 1

输出:

5 4 2 1

#include<stdio.h>
#include<stdlib.h>
typedef int DataType;
typedef struct linklist
{
	DataType x;
	struct linklist *next;
}LinkList;
LinkList* InitLinkList()
{
	LinkList* head;
	head = (LinkList*)malloc(sizeof(LinkList));
	head->next = NULL;
	return head;
}
void CreateListL(LinkList* head,int n)
{
	LinkList* s;
	LinkList* last;
	last = head;
	int i = 0;
	for (i = 0; i < n; i++)
	{
		s = (LinkList*)malloc(sizeof(LinkList));
		scanf("%d",&s->x);
		s->next = NULL;
		last->next = s;
		last = s;
	}
}
void print(LinkList* head)
{
	LinkList* p;
	p = head->next;
	while (p != NULL)
	{
		printf("%d ", p->x);
		p = p->next;
	}
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	LinkList *S = InitLinkList();
	CreateListL(S,n);
	print(S);
	return 0;
}

对于这个问题,我们要注意两个地方:

1.我们平时对单链表进行遍历往往是从前往后遍历

2.输入样例的顺序和遍历的顺序是一样的,这就要求我们使用尾插法创建单链表。

单链表的求和

描述:

牛牛输入了一个长度为 n 的数组,他想把这个数组转换成链表,链表上每个节点的值对应数组中一个元素的值,然后遍历链表并求和各节点的值。

输入描述:

第一行输入一个正整数 n ,表示数组的长度。

第二行输入 n 个正整数,表示数组中各个元素的值。

输出描述:

把数组转换成链表然后对其求和并输出这个值。

输入:

5 5 2 3 1 1

输出:

12

#include<stdio.h>
#include<stdlib.h>
typedef int DataType;
typedef struct linklist
{
	DataType data;
	struct linklist* next;
}LinkList;
LinkList* InitList()
{
	LinkList* head;
	head = (LinkList*)malloc(sizeof(LinkList));
	head->next=NULL;
	return head;
}
void CreatLinkL(LinkList *head,int n)
{
	LinkList* s;
	LinkList* last;
	last = head;
	int i = 0;
	for (i = 0; i < n; i++)
	{
		s = (LinkList*)malloc(sizeof(LinkList));
		scanf("%d", &s->data);
		s->next = NULL;
		last->next = s;
		last = s;
	}
}
void get_sum(LinkList* head)
{
	LinkList* p;
	int sum = 0;
	p = head->next;
	while (p != NULL)
	{
		sum += p->data;
		p = p->next;
	}
	printf("%d", sum);
}
int main()
{
	LinkList* s;
	s = InitList();
	int n = 0;
	scanf("%d", &n);
	CreatLinkL(s, n);
	get_sum(s);
	return 0;
}

这一题对于单链表的创建就没有要求了,用头插法和尾插法都可以。然后遍历单链表进行求和就可以了,很简单的两道题。

到此这篇关于C语言单链表遍历与求和示例解读的文章就介绍到这了,更多相关C语言单链表遍历内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言之实现单链表指定结点的插入方式

    目录 单链表指定结点的插入 链表之在指定结点前面或后面插入新的结点 单链表指定结点的插入 #include <bits/stdc++.h> using namespace std; typedef struct node { int data; struct node *next; }no; int main() { no *head,*tail,*p,*q; head=new no; head->next=NULL; tail=head; int n; printf("一共要

  • C语言中如何实现单链表删除指定结点

    目录 单链表删除指定结点 链表的删除结点(各种方法) 链表中删除第i个结点 删除与链表中与a相同的结点 删除链表中重复元素 单链表删除指定结点 在单链表中删除指定的结点.这里单链表是用尾插法建立的,因为尾插法输出的顺序与输入的顺序是相同的. #include <bits/stdc++.h> using namespace std; typedef struct node { int data; struct node *next; }no; int main() { no *head,*tai

  • C语言深入探索之单链表与typedef的用法

    目录 前言 详解typedef关键字 含义 具体使用 详解单链表参数形式 指针知识补充 单链表形参详解 单链表实战案例 完整代码实现 详解头插建表 运行效果 前言 昨天博主去本站问答贴子逛了逛,然后发现了好多关于数据结构线性表,具体来说是单链表的问题.有的是没有一点思路,无从下手:有的是看不懂代码,不理解关键字以及被形参的形式气的不行,我总结了一下常见问题来给大家带来干货,到后面还有简单案例来巩固知识,弄透一题胜无脑刷百题,接下来是正文内容. 详解typedef关键字 含义 C语言允许用户使用

  • C语言实题讲解快速掌握单链表下

    目录 1.移除链表元素 2.反转链表 3.链表的中间节点 4.链表中倒数第k个节点 5.合并两个有序链表 6.链表分割 1.移除链表元素 链接直达: 移除链表元素 题目: 思路: 此题要综合考虑多种情况,常规情况就如同示例1,有多个节点,并且val不连续,但是非常规呢?当val连续呢?当头部就是val呢?所以要分类讨论 常规情况: 需要定义两个指针prev和cur,cur指向第一个数据,prev指向cur的前一个.依次遍历cur指向的数据是否为val,若是,则把prev的下一个节点指向cur的下

  • ​​​​​​​C语言实现单链表基本操作方法

    目录 存储结构 基本功能 头插法创建单链表 尾插法创建单链表 获取指定位置的元素 在指定位置插入元素 删除指定位置的元素 获取单链表的长度 合并两个非递减的单链表 晴链表 遍历打印单链表 附上完整代码 存储结构 typedef int dataType://爱护据类型 typedef struct Node { DataType data; // 结点数据 struct Node *next; // 指向下一个结点的指针 } Node, *LinkList; 基本功能 头插法创建单链表void

  • C语言如何实现头插法建立单链表

    目录 怎么将结点一个个插入在某个结点前面呢? 然后再在头结点的后面插入新的结点 首先要明确一点,利用头插法建立出来的单链表的输出都是逆序的(就是和你的输入顺序反着来的)然后就是要明确生成的新结点是一个个加在某个结点的前面的(这个结点不一定是头结点,下面的代码是插在p的前头),这就是头插法. 怎么将结点一个个插入在某个结点前面呢? 下面的图可以比较详细的展示出来: 至少对我来说挺详细的哈 p->next=head->next; //一开始 head->next=NULL:  head-&g

  • C语言数据结构之单链表的实现

    目录 一.为什么使用链表 二.链表的概念 三.链表的实现 3.1 创建链表前须知 3.2 定义结构体 3.3 申请一个节点 3.4 链表的头插 3.5 链表的尾插 3.6 链表的尾删 3.7 链表的头删 3.8 寻找某节点 3.9 在指定节点前插入节点 3.10 删除指定节点前的节点 3.11 链表的销毁 一.为什么使用链表 在学习链表以前,我们存储数据用的方式就是数组.使用数组的好处就是便于查找数据,但缺点也很明显. 使用前需声明数组的长度,一旦声明长度就不能更改 插入和删除操作需要移动大量的

  • C语言实题讲解快速掌握单链表上

    目录 1.移除链表元素 2.反转链表 3.链表的中间节点 4.链表中倒数第k个节点 5.合并两个有序链表 6.链表分割 1.移除链表元素 链接直达: 移除链表元素 题目: 思路: 此题要综合考虑多种情况,常规情况就如同示例1,有多个节点,并且val不连续,但是非常规呢?当val连续呢?当头部就是val呢?所以要分类讨论 常规情况: 需要定义两个指针prev和cur,cur指向第一个数据,prev指向cur的前一个.依次遍历cur指向的数据是否为val,若是,则把prev的下一个节点指向cur的下

  • C语言单链表遍历与求和示例解读

    目录 单链表的遍历 单链表的求和 单链表的遍历 描述: 牛牛从键盘输入一个长度为 n 的数组,问你能否用这个数组组成一个链表,并顺序输出链表每个节点的值. 输入描述: 第一行输入一个正整数 n ,表示数组的长度 第二行输入n个数据 输出描述: 制作一个链表然后输出这个链表的值 输入: 4 5 4 2 1 输出: 5 4 2 1 #include<stdio.h> #include<stdlib.h> typedef int DataType; typedef struct link

  • C语言单链表的图文示例讲解

    目录 一.单链表的结构 二.单链表的函数接口 1. 申请结点及打印单链表 2. 尾插尾删 3. 头插头删 4. 中间插入和删除 1. 在 pos 指向的结点之后插入结点 2. 在 pos 指向的结点之前插入结点 3. 删除 pos 指向的结点的后一个结点 4. 删除 pos 指向的结点 6. 查找 7. 销毁单链表 在上一篇所讲述的 动态顺序表 中存在一些缺陷 1.当空间不够时需要扩容,扩容是有一定的消耗的 如果每次空间扩大一点,可能会造成空间的浪费,而空间扩小了,又会造成频繁的扩容2.在顺序表

  • C语言单链表的实现

    单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素. 链表结构: SList.h #pragma once typedef int DataType; typedef struct SListNode { DataType data; struct SListNode* next; }SListNode; // 如果要修改链表就必须加引用 SListNode* _BuyNode(DataType x); //建立节点 void PrintSlist(SListNode

  • C语言单链表实现方法详解

    本文实例讲述了C语言单链表实现方法.分享给大家供大家参考,具体如下: slist.h #ifndef __SLIST_H__ #define __SLIST_H__ #include<cstdio> #include<malloc.h> #include<assert.h> typedef int ElemType; typedef struct Node { //定义单链表中的结点信息 ElemType data; //结点的数据域 struct Node *next

  • 详解go语言单链表及其常用方法的实现

    目的 在刷算法题中经常遇到关于链表的操作,在使用go语言去操作链表时不熟悉其实现原理,目的是为了重温链表这一基础且关键的数据结构. 1.链表的特点和初始化 1.1.链表的特点 用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的) 1.2.结点 结点(node) 数据域 => 存储元素信息 指针域 => 存储结点的直接后继,也称作指针或链 首元结点 是指链表中存储的第一个数据元素的结点 头结点 是在首元结点之前附设的一个结点,其指针域指向首元结点(非必须) 头指

  • C语言单链表实现学生管理系统

    本文实例为大家分享了C语言单链表实现学生管理系统的具体代码,供大家参考,具体内容如下 代码: #include<stdio.h> #include<stdlib.h> #include <string.h> #include <malloc.h> struct Student { int num;//学号 char name[20];//名字 char sex[2]; int age; struct Student *next; }; void insert

  • c语言单链表尾添加的深入讲解

    前言 犹豫了几天,看了很多大牛写的关于c语言链表,感触很多,终于下定决心,把自己对于链表的理解随之附上,可用与否,自行裁夺.由于作者水平有限也是第一次写,不足之处,竭诚希望得到各位大神的批评指正.制作不易,不喜勿喷,谢谢!!! 在正文开始之前,我先对数组和链表进行简单的对比分析. 链表也是一种很常见的数据结构,不同于数组的是它是动态进行存储分配的一种结构.数组存放数据时,必须要事先知道元素的个数.举个例子,比如一个班有40个人,另一个班有100个人,如果要用同一个数组先后来存放这两个班的学生数据

  • C语言单链表实现图书管理系统

    本文实例为大家分享了C语言单链表实现图书管理系统的具体代码,供大家参考,具体内容如下 单链表实现的图书管理系统相比于结构体实现的管理系统,可以随时开辟新的空间,可以增加书的信息 单链表的实现 首先肯定还是打印单链表的常规操作,创建表头,创建节点,表头法插入,特定位置删除,打印链表 struct book {     char name[20];     float price;     int num;          //书的数量 }; //3 数据容器--链表 struct Node {

  • C语言单链表实现多项式相加

    本文实例为大家分享了C语言单链表实现多项式相加的具体代码,供大家参考,具体内容如下 //多项式的相加和相乘 #include<stdio.h> #include<stdlib.h> #pragma warning(disable:4996)//兼容scanf typedef struct node { int coef; int expon; struct node* link; }Polynode,*Polynomial; Polynomial InsertPolyLinklis

  • Go语言单链表实现方法

    本文实例讲述了Go语言单链表实现方法.分享给大家供大家参考.具体如下: 1. singlechain.go代码如下: 复制代码 代码如下: ////////// //单链表 -- 线性表 package singlechain //定义节点 type Node struct {     Data int     Next *Node } /* * 返回第一个节点 * h 头结点  */ func GetFirst(h *Node) *Node {     if h.Next == nil {  

随机推荐