最近学习Python感觉又回到了刚开始学习Python的现状,学着理论知识,做着笔记,这时应该要学会调整了,或者说是应该去找一些适量的题刷一下,便于记住一些简单的语法知识。小编最开始便是由于学了一些后由于没刷题便忘记了。这里给大家推荐一个python刷题网站,叫Python123,切记刷题不是目的,得知道每次刷题后我又学到了什么。
今天分享一个C语言链表题目。
任务如下:
编写程序,从键盘输入一串整数以及整数的个数,以单链表形式存储起来,计算单链表中结点的个数,输出单链表的数据及结点的个数。
效果如下:
输入:
8
12367802
输出:
12367802
8
源代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node *next;
}Node;
Node *CreatList(){//建立链表
int val, i, n;
Node *phead, *p, *q;
phead = (Node *)malloc(sizeof(Node));
q=phead;
q->next=NULL;
scanf("%d", &n);
for(i=0; i<n; ++i)
{
scanf("%d", &val);
p = (Node *)malloc(sizeof(Node));
p->data=val;
q->next=p;
p->next=NULL;
q=p;
}
return phead;
}
void ShowList(Node *phead){//输出链表
Node*p;
p=phead->next;
while(p){
printf("%d",p->data);
p=p->next;
}
printf("\n");
}
int Length(Node *phead){//统计节点
int n=0;
Node *p;
p=phead->next;
while(p){
p = p->next;
n++;
}
return n;
}
int main(void)
{
Node *phead;
phead = CreatList();
ShowList(phead);
printf("%d", Length(phead));
return 0;
}
运行结果: