c语言遍历是什么意思?

Python038

c语言遍历是什么意思?,第1张

c语言遍历是指沿着某条搜索路线,依次对树(或图)中每个节点均做一次访问。访问结点所做的操作依赖于具体的应用问题, 具体的访问操作可能是检查节点的值、更新节点的值等。不同的遍历方式,其访问节点的顺序是不一样的。遍历是是c语言上进行其它运算之基础。

扩展资料:

由于从给定的某个节点出发,有多个可以前往的下一个节点,所以在顺序计算(即非并行计算)的情况下,只能推迟对某些节点的访问——即以某种方式保存起来以便稍后再访问。常见的做法是采用栈(LIFO)或队列(FIFO)。

由于树本身是一种自我引用(即递归定义)的数据结构,因此很自然也可以用递归方式,或者更准确地说,用corecursion,来实现延迟节点的保存。这时(采用递归的情况)这些节点被保存在call stack中。

先搞清楚基本概念,不懂再问

//    返回一个带头结点的且具有五个结点的链表 

link *initLink()

{

    link * p=(link*)malloc(sizeof(link))    //    创建头结点 

    link * temp=p    //    使用变量temp在下面创建结点时指向链表末端 

    for(int i=1 i<5 i++)

    {

        link *a=(link*)malloc(sizeof(link))    //    创建一个结点 

        a->elem=i        //    为结点赋值 

        a->next=NULL    //    指针域暂时赋为NULL,若后面还要创建结点的话再修改 

        temp->next=a    //    因为temp指向链表末端,即最后一个结点

                        //    故该节点指针域应指向刚才创建的结点 a 

        temp=temp->next//    连接好以后,temp指向下一个结点(刚才创建的结点a,现在是链表末端) 

    }

    return p    //    返回头结点 

}

SLIST  *creatlist()

{

        SLIST   *head,*tail,*cnew

        head=NULL

int num

printf("输入数据(以-1结束):")

while(1)

{

 scanf("%d",&num)

 if(num==-1)//输入为-1表示输入结束

   break

 cnew=(SLIST*)malloc(sizeof(SLIST))

 cnew->data=num

 cnew->next=NULL

 if(head==NULL)//若为空则将头节点指向新节点

    head=cnew

 else

    tail->next=cnew//将当前节点的next指向新的节点

 tail=cnew

}

return head

}

void outlist(SLIST  *h)

{  

/*这里输出链表中各个数据*/

SLIST   *p

if(h==NULL)

{

printf("链表为空,没有数据\n")

return

}

printf("\n-----链表的数据元素------\n")

for(p=hp!=NULLp=p->next)

  printf("%d ",p->data)

printf("\n")

}

不知道 你为啥问两遍

实测编译通过   望采纳