算法刷题2(C++)链表遍历算法

算法框架

框架1

void traverse(ListNode * phead)
{
     
    for(ListNode *p=head;p!=NULL;p=p->next)
    {
        //迭代访问p->val;
    }

}

void traverse(ListNode * phead)
{
     ListNode *p=head;
   
     while(p!=NULL)
    {
        //迭代访问p->val;
        p=p->next;
    }

}

框架2
void traverse(ListNode * phead)
{
   if(head==NULL) return;
   //访问phead->val;
   traverse(phead->next);
}

C++:

#include <iostream>
 
#include <cstdio>

using namespace std;
struct ListNode{
  int val;
  ListNode * next;
};
void Listpushback(ListNode ** pphead,int x)
{
	ListNode * newnode= new ListNode{x,NULL};
	if(*pphead ==NULL)
	{
		*pphead=newnode;
	}
	else{
		ListNode *tail = *pphead;
		while(tail->next!=NULL)
		{
			tail= tail->next;
		}
		tail->next = newnode;
	}
}
void traverse(ListNode *phead)
{

	for(ListNode * p=phead;p!=NULL;p=p->next)
	{
       cout<<"p:"<<p->val<<endl;
	}
}

void traverse1(ListNode *phead)
{
	ListNode * p=phead;
	while(p!=NULL)
	{
		
       cout<<"p:"<<p->val<<endl;
	   p=p->next;
	}
}
void traverse2(ListNode *phead)
{
	//ListNode * p=phead;
	if(phead==NULL) return;
	cout<<"p:"<<phead->val<<endl;
    traverse2(phead->next);
}

int main(int argc, char * argv[])
{

ListNode *phead=NULL;
Listpushback(&phead,1);
Listpushback(&phead,2);
Listpushback(&phead,3); 
traverse(phead);
cout<<"---------------"<<endl;
traverse1(phead);
cout<<"---------------"<<endl;
traverse2(phead);
return 0;

}

猜你喜欢

转载自blog.csdn.net/L1153413073/article/details/126676294