尾删
int tail_del (linkListPtr S)
{
if(NULL == S || empty(S))
{
printf("失败\n");
return 0;
}
linkListPtr q = S;
for(int i=0 ; i<S->len-1;i++)
{
q=q->next;
}
free(q->next);
q->next=NULL;
S->len--;
return 1;
}
任意位置删除
int any_del(linkListPtr S ,int s)
{
if(NULL == S||empty(S)||s<1||s>S->len)
{
printf("删除失败\n");
return 0;
}
linkListPtr q = S;
linkListPtr p = NULL;
for (int i=0;i<s;i++)
{
p=q;
q=q->next;
}
if (p == NULL) {
S = q->next;
free(q);
} else {
p->next = q->next;
free(q);
}
return 1;
}
改变数据
int change(linkListPtr S ,int s,DataType e)
{
if(NULL == S)
{
printf("添加失败!\n");
return 0;
}
linkListPtr p = S;
int i=0;
while(p!=NULL &&i<s)
{
p=p->next;
i++;
}
if (p == NULL || i>s){
printf("位置无效\n");
return 0;
}
p->data=e;
return 1;
}
linkListPtr find(linkListPtr S ,int e)
{
if(NULL == S || empty(S))
{
printf("查找失败\n");
return 0;
}
linkListPtr p =S;
for (int i=0 ; i<S->len;i++)
{
p=p->next;
if(p->data == e)
{
printf("%p\n",p);
return p;
}
}
return 0;
}
反转
void reverse(linkListPtr S )
{
if(NULL == S || empty(S))
{
printf("default\n");
return 0;
}
linkListPtr q = S;
linkListPtr p =NULL;
linkListPtr o =NULL;
while (q != NULL) {
o = q->next;
q->next = p;
p = q;
q = o;
}
S = p;
}