题目:遍历单链表,将其结点值逆序输出
方法一:
1.算法设计:
从单链表的头结点开始,逐个将链表结点值从数组的最后往前顺序存放。然后输出数组的内容。
2.程序实现:
#include<stdio.h>
#include<malloc.h>
#define N 6//链表结点数
typedef int ElemType;
typedef struct node
{
ElemType data;
struct node *next;
}LinkListNode;
int main()
{
LinkListNode* L;
ElemType list[N]={1,2,3,4,5,6};
L=Create_Rear_LkList(list,N);
PrintList(L);
return 0;
}
LinkListNode* Create_Rear_LkList(ElemType a[],int n)
{
LinkListNode *head,*p,*q;
int i=0;
head=(LinkListNode*)malloc(sizeof(LinkListNode));
q=head;
for(i=0;i<n;i++)
{
p=(LinkListNode*)malloc(sizeof(LinkListNode));
p->data=a[i];
q->next=p;
q=p;
}
p->next=NULL;
return head;
}
void PrintList(LinkListNode* L)
{
LinkListNode* p;
int arr[N];
int i=N-1;
P=L->next;
while(p)
{
arr[i--]=p->data;
p=p->next;
}
while(i++<N)
printf("%d",arr[i]);
}
方法二:
用递归的方法实现:
void PrintList(LinkListNode* L)
{
if(L->next!=NULL)
PrintList(L->next);
printf("%d",L->data);
在主函数中的调用形式为PrintList(L->next);