C语言单链表遍历
白朝槿kk 人气:2单链表的遍历
描述:
牛牛从键盘输入一个长度为 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; }
这一题对于单链表的创建就没有要求了,用头插法和尾插法都可以。然后遍历单链表进行求和就可以了,很简单的两道题。
加载全部内容