typedef struct LNode * List;
struct LNode {
int Date;
List Next;
};
//求表长
int Length(List PtrL)
{
List p = PtrL;
int j = 0;
while §
{
p = p->Next;
j++;
}
return j;
}
//按序号查找
List FindKth(int K, List PtrL)
{
List p = PtrL;
int i = 1;
while (p != NULL && i < K)
{
p = p->Next;
i++;
}
if (i == K) return p;
else return NULL;
}
//按值查找
List Find(int a, List PtrL)
{
List p = PtrL;
while (p != NULL && p->Date != a)
p = p->Next;
return p;
}
//插入
List Insert(int a, int i, List PtrL)
{
List p, s;
if (i == 1)
{
s = (List)malloc(sizeof(struct LNode));
s->Date = a;
s->Next = PtrL;
return s;
}
p = FindKth(i - 1, PtrL);
if (p == NULL)
{
printf("参数i有误");
return NULL;
}
else {
s = (List)malloc(sizeof(struct LNode));
s->Date = a;
s->Next = p->Next;
p->Next = s;
return PtrL;
}
}
//删除
List Delete(int i, List PtrL)
{
List p, s;
if (i == 1)
{
s = PtrL;
if (PtrL != NULL) PtrL = PtrL->Next;
else return NULL;
free(s);
return PtrL;
}
p = FindKth(i - 1, PtrL);
if (p == NULL) {
printf(“第%d个节点不存在”, i - 1); return NULL;
}
else if (p->Next == NULL) {
printf(“第%d个节点不存在”, i); return NULL;
}
else {
s = p->Next;
p->Next = s->Next;
free(s);
return PtrL;
}
}