单向链表的查询【openjudge】
- 总时间限制:
- 2ms
- 内存限制:
- 1024kB
- 描述
-
创建一个链式存储的线性表,要求找出该链表中值为x的元素有多少个?
- 输入
- 输入若干整数,以0结束。
再输入x的值 - 输出
- x在链表中出现的次数
- 样例输入
-
3 2 3 3 5 8 5 3 0 3
- 样例输出
-
4
-
提示
本题只有一组测试数据,不需要重复
这答题咋一看挺水。但是对我而言还是发现了许多问题。在大牛的眼里一定是不屑一做的题目。但是我通过这道题目还是发现了自己数据结构的薄弱,链表的薄弱。是在惭愧的很啊。指针神马的还是有待研究。。。。
还有就是我发现了编译环境VC的c标准与codeblocks的gcc标准的各自利弊。。
话说VC的容错性还真是强啊。明明在结构体那里定义完之后,声明head指针的时候,写成了Lnode *head,(应该是 LNode *head)但是竟然编译通过还运行了。我去。。
好吧废话不多说了。期待我的进步了。不要急于求成了,链表什么的还没搞懂,二叉树还是慢慢来吧。话说数据结构老师直接跳过串和广义表这两章了。。直接到树了。。还能更坑有木有。不过也好。快点学吧。是时候逼逼自己了。
#include <stdio.h> #include <malloc.h> typedef struct Lnode{ int data; struct Lnode *next; }LNode,*Linklist; LNode *head; void initlist(Linklist *L) { *L=(LNode *)malloc(sizeof(LNode)); (*L)->next=NULL; } void Inselem(int x) { LNode *s; s=(LNode *)malloc(sizeof(LNode)); s->data=x; s->next=head->next; head->next=s; } void Locate(int x) { int sum=0; LNode *p; p=head->next; while(p!=NULL) { if(p->data==x) sum++; p=p->next; } printf("%d\n",sum); } int main() { int m,n; initlist(&head); while(scanf("%d",&m)!=EOF) { if(!m){ scanf("%d",&n); Locate(n);} else{ Inselem(m); } } return 0; }