单向链表-遍历(查找)

来源:互联网 发布:天刀捏脸数据女百度云 编辑:程序博客网 时间:2024/05/16 11:50

1)查找
例:在一个非空单向链表(数据域值不重复)查找值为key的结点,并返回结点地址,若未找到返回NULL。

ElemSN * FindKeyNode(ElemSN *h,int key){    for(ElemSN *p=h;p && p->data!=key;p=p->next);    return p;}

例:
①输出单向链表尾结点的值。(非空链表)
②输出单向链表结点个数。
③输出单向链表,结点值为奇数的结点个数。(数据域正整数)
④输出单向链表,结点值最大的值。
⑤ 逆向输出单向链表数据域的值。

 //①输出单向链表尾结点的值。(非空链表) int TialNode(ElemSN *head){    for(ElemSN *p=head;p->next;p=p->next);    return p->data;}
//②输出单向链表结点个数。int CountNode(ElemSN *head){    int cnt=0;    for(ElemSN *p=head;p;p=p->next,cnt++);    return cnt;}
//③输出单向链表,结点值为奇数的结点个数。(数据域正整数)int CountOdd(ElemSN *head){    int cnt=0;    for(ElemSN * p=head;p;p=p->next)    {        if(p->data%2==0)            cnt++;    }    return cnt;}                         
//④输出单向链表,结点值最大的值。int MaxNode(ElemSN *head){    int max=head->data;    for(ElemSN * p=head->next;p;p=p->next)    {        if(p->data>max)            max=p->data;    }    return max;}
//⑤逆向输出单向链表数据域的值。void RePrintLink(ElemSN *head){    ElemSN *p,*tag=NULL;//tag起岗哨作用    while(tag!=head)    {        for(p=head;p->next!=tag;p=p->next);        tag=p;        printf("%5d",tag->data);    }    printf("\n");}
阅读全文
0 0
原创粉丝点击