啥意思?你都有代码了吗?
意思是要建立一个链表,还要建立一个栈?
把链表元素存入栈,然后从栈顶逐个提取,按链表顺序存入数据就倒过来了
代码如下,如有帮助,请帮忙采纳一下,谢谢。
代码:
#include<stdio.h>
#include <stdlib.h>
#define MAXLEN 10
typedef struct node
{
int data;
struct node* next;
}NODE;
typedef NODE* elementtype;
typedef struct
{
elementtype element[MAXLEN];
int top;
}SqStack;
SqStack InitStack_sq()
{
SqStack s;
s.top = -1;
return s;
}
int GetTop_sq(SqStack* s,elementtype* x)
{
*x = s->element[s->top];
return 1;
}
int Push_sq(SqStack* s,elementtype x)
{
if(s->top == MAXLEN-1)
return 0;
s->top++;
s->element[s->top] = x;
return 1;
}
int Pop_sq(SqStack* s,elementtype* x)
{
if(s->top == -1)
return 0;
*x = s->element[s->top];
s->top--;
}
NODE* create()
{
NODE* head=0,*q,*p;
int i;
q = head;
printf("请输入5个数据(以空格分隔):");
for (i = 0;i<5;i++)
{
q = (NODE*)malloc(sizeof(NODE));
scanf("%d",&q->data);
q->next = 0;
if(head == 0)
{
head = q;
p = head;
}else
{
p->next = q;
p = q;
}
}
return head;
}
//显示链表
void show(NODE* head)
{
printf("链表数据:");
while(head)
{
printf("%d ",head->data);
head = head->next;
}
}
int main()
{
NODE* t,*p;
NODE* head = create();
SqStack sk = InitStack_sq();
printf("逆序前");
show(head); //显示原来的链表
while(head)
{
Push_sq(&sk,head);
head = head->next;
}
//出栈
head = 0;
while(Pop_sq(&sk,&t))
{
if(head == 0)
{
head = t;
head->next = 0;
p = head;
}else
{
p->next = t;
p = t;
}
}
p->next = 0;
printf("\n逆序后");
show(head);
//释放空间
while(head)
{
p = head->next;
free(head);
head = p;
}
head = 0;
return 0;
}