//单链表的建立,把‘a’-‘z’26个字母插入到链表中,并且倒序,还要打印
#include <stdio.h>
#include <stdlib.h>
int c= 0;
typedef struct node
{
char data;
struct node *next;
}Node;
typedef struct node *Linklist;
int Reverse(Linklist L)
{
Linklist p,q,r;
if(L->next == NULL || L == NULL)
{
return 1;
}
p = L->next;
q = p->next;
p->next = NULL;
while(q != NULL)
{
r = q->next;
q->next = p;
p = q;
q = r;
}
L->next = p;
return 0;
}
void ListInit(Linklist *L)
{
(*L) = (Linklist)malloc(sizeof(Node));
if((*L) == NULL)
{
exit(1);
}
(*L)->next =NULL;
}
void ListInsert(Linklist *L,char e)
{
Linklist n = (Linklist)malloc(sizeof(Node));
Linklist p = *L;
n->data = e;
n->next = p->next;
p->next = n;
}
void Traverse(Linklist L)
{
Linklist p = L->next;
while(p != NULL)
{
printf("%c ",p->data);
p = p->next;
}
printf("\n");
}
int main()
{
int i = 0,e = 97;
Linklist L;
ListInit(&L);
for(i = 0;i < 26;i++)
{
ListInsert(&L,e);
e++;
}
Traverse(L);
Reverse(L);
Traverse(L);
return 0;
}