单链表应用——逆序输出单链表中的元素

上一篇文章主要实现了单链表的基本操作,这篇文章主要讲的是单链表的具体应用

1.单链表的逆序输出(mylist.h)

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "mylist.h" 

void PrintList(List L)
{
	Position P = L;
	assert(L != NULL);
	if(IsEmpty(L))
	{
		printf("List empty\n");
	}
	else
	{
		do
		{
			P = Next(P);
			printf("%3d", Retrieve(P));
		}while(!IsLast(P));
		putchar('\n');
	}
}

void Print(Position P)
{
	if(P == NULL)
		return;
	else
		Print(Next(P));
	printf("%3d", Retrieve(P));
}

void ReversedPrint(List L)
{
	Position P = First(L);
	Print(P);
}

int main(void)
{
	Position P;
	List L;
	int i;

	MakeEmpty(&L);
	P = L;
	for(i = 0; i < 5; ++i)
	{
		Insert(i, P);
		P = Next(P);
	}
	PrintList(L);
	ReversedPrint(L);
	system("Pause");
	return 0;
}

2. 单链表的倒置

void ReversedList(List L)
{
	Position P, TmpCell;

	assert(L != NULL);
	P = L->Next;
	L->Next = NULL;
	while(P)
	{
		TmpCell = P->Next;
		P->Next = L->Next;
		L->Next = P;
		P = TmpCell;
	}
}

你可能感兴趣的:(单链表应用——逆序输出单链表中的元素)