前言
我们在学习编程的过程中,虽然有些语法很简单,但是我们还是要做多题。不做题是发现不了问题的,发现问题我们就可以“对症下药”,进行查漏补缺了。刷题可以先从简单题开始刷,熟练之后再做一些可以提升自己能力的题。今天做的题比较简单,是牛客网上的,大家如果想刷题可以在牛客网里面刷题。
单链表的遍历
描述:
牛牛从键盘输入一个长度为 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;
}
这一题对于单链表的创建就没有要求了,用头插法和尾插法都可以。然后遍历单链表进行求和就可以了,很简单的两道题。(如果有更简单的方法,欢迎大佬在评论区留言,感谢!)