单向链表的创建在这里不在赘述,详细请看另一篇文章《单向链表的创建》。在本篇文章中,主要通过举例的方式来帮大家理解单向链表的基本遍历。
本篇文章中创建节点用以下表示
typdef struct node{
int date;//定义数据域
struct node * next;//定义指针域
} ElemSN;
例一:输出单向链表尾节点的值
void PrintTail(ElemSN *head)//传递头指针
{
for( ;head->next!=NULL;head=head->next);//"head->next!=NULL"可以直接用"head->next"进行表示
printf("%d",head->data;);
}
例二:输出单向链表的节点个数
void CountNode(ElemSN *head)
{
int i;
for(i=0;head;head=head->next)
i++;
printf("%d",i);
}
例三:输出单向链表的最大值
void PrintMax(ElemSN *head)
{
int max=head->data;
while(head){
if(head->data>max)
max=head->data;
head=head->next;
}
}
例四:逆向输出单向链表数据域的值
void RePrintLink(ElemSN *head)
{
ElemSN *tail,*p;
tail=NULL;
while(head!=tail){
for(p=head;head->next!=tail;head=head->next);
tail=p;
printf("%d",p->data);
}
}
例五:在一个非空单向链表中(数据域值不重复)中查找数据域为key的节点,并返回节点的地址,若未找到返回NULL
void FoundNode(ElemSN *head,int key)//接受头指针,接受key
{
ElemSN *p;
p=head;
for(p=head;p&&p->data!=key;p=p->next);
return p;
}