单链表运算
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int data;
struct Node* next;
}Node,*Linklist;
int Createlist(Linklist &L, int n)
{
int i;
Linklist p;
int ListTravel(Linklist &L);
L = (Linklist)malloc(sizeof(Node));
L->next = NULL;
for (i=n;i>0;--i)
{
p = (Linklist)malloc(sizeof(Node));
scanf("%d",&p->data);
p->next = L->next;
L->next = p;
}
printf("\n");
ListTravel(L);
}
int ListEmpty(Linklist &L)
{
if (L!=NULL&&L->next==NULL)
printf("empty list!\n");
}
int Topdellist(Linklist &L)
{
int Listlength(Linklist &L);
int ListTravel(Linklist &L);
int j;
Linklist p;
int b = Listlength(L);
for (j=0;j<b;j++)
{
p=L;
p=p->next;
L->next=p->next;
free(p);
ListTravel(L);
}
if(ListEmpty(L))
return 1;
}
int Listlength(Linklist &L)
{
Linklist p;
int i;
if(L)
{
i=0;
p=L->next;
while(p)
{
i++;
p=p->next;
}
}
return i;
}
int ListTravel(Linklist &L)
{
Linklist p;
p=L->next;
while (p)
{
printf("%d ",p->data);
p=p->next;
}
if(L->next!=NULL)
printf("\n");
}
int main()
{
Linklist L;
Createlist(L,5);
Topdellist(L);
return 0;
}