对于这个问题,可以利用"栈"的后进先出的思想,将链表中的节点先入栈后再出栈,这样就可以将链表从头 到位翻转过来。从网上搜索一下,没有找到可以直接调用栈的的方法,因此要用C语言实现必须要先写完栈的基本操作(入栈、出栈、初始化),幸好以前写过一个栈的基本操作的源码,可以把它放到工程中。
head.h文件
#ifndef HEAD_H_
#define HEAD_H_
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <stdbool.h>
#endif
stack.h文件
#ifndef STACK_H_
#define STACK_H_
#include "head.h"
typedef struct node
{
int data;//数据域
struct node *pNext;//指针域
}NODE, *PNODE;
typedef struct stack
{
PNODE top;
PNODE buttom;
}STACK, *PSTACK;
void initStack(PSTACK ps);
void pushStack(PSTACK ps, int val);
void traverse(PSTACK ps);
bool empty(PSTACK ps);
bool pop(PSTACK ps, int *pval);
void clear(PSTACK ps);
#endif
stac