新手提问,非常简单,关于链表的反向输出

mm1543 2008-03-26 01:37:47
写了一个验证的代码,不知道问题在那里,请教各位,多谢!
我想实现的是输入一些数字把它们链接起来,然后把这个单向链表的指针翻转,然后再输出

#include <iostream>
struct node
{
int data;
node* next;
};

void reverse(node*& head);

void main()
{
using namespace std;
node anode;
cin>>anode.data;
node* h=&anode;
node *pre;
for( int i=1; i<5; i++)
{
node anode2;
cin>>anode2.data;
node *n=&anode2;
if (i==1)
{
h->next=n;
}
else
{
pre->next =n;
}
pre=n;

}

reverse(h);
for (int j=0; j<5; j++)
{
cout<<(h+j)->data;
}
return ;
}

void reverse(node*& head)
{
node * pre, *bak, *now;
if (head==NULL)
return;
pre=head;
now=head;
bak=head->next;
while (bak!=NULL)
{
now=bak;
bak=now->next;
now->next=pre;
pre=now;
}
}
...全文
66 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mm1543 2008-03-26
  • 打赏
  • 举报
回复
非常感谢你们,马上给你们分,呵呵
ryfdizuo 2008-03-26
  • 打赏
  • 举报
回复

//更改较大;
#include <iostream>
struct node
{
int data;
node* next;
node():next(NULL)
{}
};

void reverse(node*& head);
void DeleteList(node* head);

void main()
{
using namespace std;

node* h=new node;
cin>>h->data;

node *pre;
for( int i=1; i <5; i++)
{
node*n = new node;
cin>>n->data;

if (i==1)
{
h->next=n;
pre=h->next;
}
else
{
pre->next=n;
pre=pre->next;
}
}
reverse(h);
node *p=h;
while (p)
{
cout<<p->data<<endl;
p = p->next;
}

DeleteList(h);
return ;
}

void reverse(node*& head)
{
node * pre, *bak, *now;
if (head==NULL)
return;
pre=head;
now=head;
bak=head->next;
while (bak!=NULL)
{
now=bak;
bak=now->next;
now->next=pre;
pre=now;
}
head->next=NULL; //打断原来head节点和第二个节点之间的联系;
head = now; //更新头节点;
}
void DeleteList(node* head)
{
node *p;
while (head)
{
p=head;
head=head->next;
delete p;
}
}
bargio_susie 2008-03-26
  • 打赏
  • 举报
回复
#include  <iostream>
using namespace std;

struct node
{
int data;
node *next;
};

void reverse(node*& head);

void main()
{
node anode;
cin>>anode.data;

node *h = &anode;
node *pre = h;

for( int i=1; i <5; i++)
{
node *anode2 = new node;
cin>>anode2->data;
anode2->next = NULL;
node *n = anode2;

if (i == 1)
{
h->next = n;
}
else
{
pre->next = n;
}
pre = n;

}

reverse(h);
// for (int j=0; j <5; j++)
// {
// cout << (h+j)->data;
//}
while (h != NULL)
{
cout << h->data << ' ';
h = h->next;
}

return;
}

void reverse(node*& head)
{
node *bak, *now;

if (head==NULL)
return;

now = head;
bak = head->next;
head->next = NULL;

while (bak != NULL)
{
now = bak->next;
bak->next = head;
head = bak;
bak = now;
}
}

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧