6-1 (10 分)
本题要求实现一个函数,求带头结点的单链表中元素序号。
函数接口定义:
int Locate ( LinkList L, ElemType e);
L是带头结点的单链表的头指针,e是要查找的元素值。如果e在单链表中存在,函数Locate返回其序号(序号从1开始);否则,返回0。
裁判测试程序样例:
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
LinkList Create();/* 细节在此不表 */
int Locate ( LinkList L, ElemType e);
int main()
{
ElemType e;
LinkList L = Create();
scanf("%d",&e);
printf("%d\n", Locate(L,e));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
2 1 4 5 3 -1
5
输出样例:
4
int Locate ( LinkList L, ElemType e)
{
int count=1;//无情计数器,从1开始。下面的第一个if判断若第一次就判得p指e,那就直接输出地址为1(首元结点嘛,题目也说了序号从1开始的)
LNode *p;//弄一个指针p
p=L->next;
while(p!=NULL)//只要p不是NULL,就一直循环下去。p是NULL,跳出循环
{
if(p->data==e)//当p所指为e时,即可输出地址
return count;
p=p->next;//否则,继续p=p->next
count++;//计数器再加
}
if(p==NULL)
return 0;
}
————————————————分割线—————————————————————
はいはい下面是我的废话!
这个。。。如果想要在DEV里测试一下这儿的代码行不行的通。。其实是不行的。。。人原来的代码就省略了好多东西,肯定是运行不了的。
做一道题开十几个网页搜参考答案来参考。。。俺真的不太行。。。今天拖鞋刚跟我说:“其实你想一下,学计算机的人是按照规定去做就行了,还是需要有自己创造性的思想解读理解?”我说:“肯定要有创造思维,但我没有基础,都不知道怎么创造。”很无力的回答呜呜呜(虽然我是在一边假哭一遍不好好打基础。。。该死!)让大一下学期充实起来吧!不要再在小组里拖别人后腿了!