给定单链表的头指针Head,可以将链表反向,一种方法利用指针直接赋值,一种借助stack先进后出的特性
#include
<
iostream
>
#include
<
stack
>
using
namespace
std;
struct
node
...
{
int i;
node* next;
}
;
void
reverse1(node
**
head)
...
{
node* p1;
node* p2;
p1=*head;
p2=p1->next;
(*head)->next=NULL;
while(p2)
...{
p1=p2->next;
p2->next=*head;
*head=p2;
p2=p1;
}
}
void
reverse2(node
**
head)
...
{
stack<node*> S;
node* temp=*head;
while(temp)
...{
S.push(temp);
temp=temp->next;
}
*head=S.top();
S.pop();
temp=*head;
while(!S.empty())
...{
temp->next=S.top();
S.pop();
temp=temp->next;
temp->next=NULL;
}
}

int
main()
...
{
node* head=new node;
head->i=0;
head->next=NULL;
node* temp=head;
int i;
for(i=1;i<10;++i)
...{
temp->next=new node;
temp=temp->next;
temp->i=i;
temp->next=NULL;
}
temp=head;
while(temp)
...{
cout<<temp->i<<endl;
temp=temp->next;
}
reverse1(&head);
temp=head;
while(temp)
...{
cout<<temp->i<<endl;
temp=temp->next;
}
reverse2(&head);
temp=head;
while(temp)
...{
cout<<temp->i<<endl;
temp=temp->next;
}

return 0;
}

456

被折叠的 条评论
为什么被折叠?



