c语言借助栈单链表逆置,写一个算法,借助于栈将一个单链表置逆

我写了一个,你看看吧。

//课后习题3-6 用单链表实现逆转;

#include

using namespace std;

class List; //List类的前视声明;

class ListNode //ListNode类定义;

{

friend class List; //List为友元类;

private:

int data;

ListNode *link;

public:

ListNode(int d){data=d;link=0;} //构造函数(空表);

};

class List //List类定义;、

{

private:

ListNode *first,*last;

public:

List(){first=last=0;} //构造函数;

void Insert(int); //插入函数:为链表赋值;

void Inverse();

void print(int); //输出函数;

};

void List::Insert(int i)

{

ListNode *p=new ListNode(i);

if(first==0) //原为空表;

{

first=last=p;

last->link=NULL;

}

else

{

p->link=first;

first=p;

}

}

void List::Inverse()

{

if(first==0)return; //原为空表时无逆转;

ListNode *p=first->link,*pr=NULL;

while(p!=NULL)

{

first->link=pr; //逆转第一个节点;

pr=first;

first=p;

p=p->link;

}

first->link=pr;

}

void List::print(int n) //输出链表;

{

ListNode *q=first;

cout<data<

for(int i=0;i

{

q=q->link;

cout<data<

}

cout<

}

void main()

{

List a; //定义对象a;

int n;

cout<

cin>>n;

for(int i=n;i>=1;i--)

{

a.Insert(i);

}

cout<

a.print(n);

a.Inverse();

cout<

a.print(n);

}

6f83fddf9cb9ff6843fffd45e1807199.gif

让暴风雨来的更猛烈些吧!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值