我是以王道考研数据结构的题目进行写的,算法的思想都是一样的。
希望学弟学妹们好好学习数据结构,不然等着以后后悔。
#include<stdio.h>
#define elemtype int
#define null 0
typedef struct LNode{
elemtype data;
struct LNode *next;
}LNode, *LinkList;
void InitLinkList(LinkList *L,elemtype a[],int length){
int i=0;
LNode *s;
(*L)=(LinkList)malloc(sizeof(LNode));
(*L)->data = null;
LNode *p=(*L);
while(i<length){
s=(LNode *)malloc(sizeof(LNode));
s->data = a[i];
s->next = null;
p->next = s;
p = s;
i++;
}
}
//遍历输出链表
void PrintfLinkList(LinkList L){
LNode *p = L;
if(L->next == null){
printf("this LinkList is null!");
}while(p->next!=null){
printf("%d ",p->next->data);
p=p->next;
}
}
//反向输出链表(利用递归)(俄罗斯套娃)
void reverse_LinkList(LinkList L){
if(L->next!=null){
reverse_LinkList(L->next);
}
// if(L!=null){
// printf("%d ",L->data);
// }
printf("%d ",L->data);
}
int main()
{
LinkList L;
int a[6]={1,2,3,4,5,6};
int length=sizeof(a)/sizeof(elemtype);
//创建单链表
InitLinkList(&L,a,length);
PrintfLinkList(L);
printf("\n");
//逆置
reverse_LinkList(L);
printf("\n");
//递增排序
Sort(&L);
PrintfLinkList(L);
}