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语言单链表遍历内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341