链表的创建、头插法、链表的逆转
实现
#include <stdio.h>
#include <stdlib.h>
typedef struct Node
{
int data;
struct Node *next;
}LNode,*LinkList;
void init(LinkList &p)
{
p=(LinkList)malloc(sizeof(LNode));
p->data=INT_MIN;
p->next=NULL;
}
void InsertHead(LinkList p)
{
LinkList s=(LinkList)malloc(sizeof(LNode));
s->data=rand()%30;
s->next=p->next;
p->next=s;
}
void print(LinkList p)
{
LinkList s=p;
while(s->next!=NULL)
{
s=s->next;
printf("s->data=%d\n",s->data);
}
}
void tran(LinkList head)
{
LinkList p=head->next;
head->next=NULL;
LinkList q=NULL;
while(p!=NULL)
{
q=p;
p=p->next;
q->next=head->next;
head->next=q;
}
}
int main(void)
{
int i=0;
LinkList Head=NULL;
init(Head);
for(i;i<5;i++)
{
InsertHead(Head);
}
print(Head);
printf("\n");
tran(Head);
print(Head);
system("pause");
return 0;
}