急!!!!借助栈将单链表逆置?会的好友请帮帮忙,先谢!

来源:百度知道 编辑:UC知道 时间:2024/05/29 20:35:07
望会的好友能够给我答案,本人不慎感激!!谢谢啦!

两个栈 把一个栈的数据转到另一个就可以了
栈是后进先出的 那样就反过来了

//链表结点
struct node{
int name;
int num;
struct node *next;
}
//设单链表的头指针为list;
//定义二个指针*pa,*pb;
struct node *pa,*pb;
pa =list;
pb =list;

//定义一个栈
#define M 1000
int STACK[M];
//定义栈顶指针变量并初始化
int top=-1;
//判断栈是否已满,如果栈未满,则插入单链表的值得
while(top!=M-1)
{
STACK[++top]==*pa;
pa++;
}
//将栈元素依次存入链表,实现逆置
while(top!=-1)
{
*pb=STACK[top];
pb++;
top--;
}
return list;//此时链表已经实现了逆置

下面这个程序是通过栈对顺序表(数组)逆置,你只要把它改为链表的就行了。
#include<iostream>
#include<stdlib.h>
#include<string>
#include<malloc.h>
using namespace std;
#define MAXSIZE 100
typedef int ElemType;
typedef struct
{
ElemType elem[MAXSIZE];
int top;
}Stack;
int initStack(Stack **s)
{
(*s)->top=-1;
return 0;
}
int push