代码:
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
LinkList InitList()
{
LinkList pHead;
pHead=(LinkList )malloc(sizeof(LNode));
pHead->next=NULL;
return pHead;
}
void DestoryList(LinkList pHead)
{
LinkList p=pHead,p1;
while(p!=NULL)
{
p1=p->next;
free(p);
p=p1;
}
}
void ClearList(LinkList pHead)
{
LinkList p=pHead->next,p1;
while(p!=NULL)
{
p1=p->next;
free(p);
p=p1;
}
}
int ListLength(LinkList pHead)
{
int length=0;
LinkList p=pHead->next;
while(p!=NULL)
{
p=p->next;
length++;
}
return length;
}
int IsEmpty(LinkList pHead)
{
if(pHead->next==NULL)
return 1;
return 0;
}
void GetElem(LinkList pHead,int i,int *e)
{
LinkList p=pHead->next;
int cnt=0;
if(i<1)
return;
while(p!=NULL)
{
if(++cnt==i)
{
e=(int *)malloc(sizeof(int));
*e=p->data;
return;
}
p=p->next;
}
}
int LocateElem(LinkList pHead,int e)
{
LinkList p=pHead->next;
int cnt=0;
while(p!=NULL)
{
cnt++;
if(p->data==e)
return cnt;
p=p->next;
}
return -1;
}
int ModifyElem(LinkList pHead,int i,int e)
{
LinkList p=pHead->next;
int cnt=0;
if(i<1)
return 0;
while(p!=NULL)
{
if(++cnt==i)
{
p->data=e;
return 1;
}
p=p->next;
}
return 0;
}
void LinkListOutput(LinkList pHead)
{
LinkList p=pHead->next;
while(p!=NULL)
{
if(p->next==NULL)
printf("%d\n",p->data);
else
printf("%d ",p->data);
p=p->next;
}
}
int ListInsert(LinkList pHead,int i,int e)
{
LinkList p=pHead,pNew;
int cnt=0;
if(i<1)
return 0;
while(p->next!=NULL)
{
if(++cnt==i)
{
pNew=(LinkList )malloc(sizeof(LNode));
pNew->data=e;
pNew->next=p->next;
p->next=pNew;
return 1;
}
p=p->next;
}
pNew=(LinkList )malloc(sizeof(LNode));
pNew->data=e;
pNew->next=p->next;
p->next=pNew;
return 1;
}
int ListDelete(LinkList pHead,int i)
{
LinkList p=pHead,p1;
int cnt=0;
if(i<1)
return 0;
while(p->next!=NULL)
{
if(++cnt==i)
{
p1=p->next;
p->next=p->next->next;
free(p1);
return 1;
}
p=p->next;
}
return 0;
}
int main()
{
LinkList pHead=NULL;
pHead=InitList();
ListInsert(pHead,1,6);
ListInsert(pHead,3,9);
LinkListOutput(pHead);
ListInsert(pHead,3,3);
ListInsert(pHead,4,5);
ListInsert(pHead,2,8);
printf("Length %d\n",ListLength(pHead));
LinkListOutput(pHead);
ListDelete(pHead,2);
LinkListOutput(pHead);
ListDelete(pHead,1);
LinkListOutput(pHead);
return 0;
}