链表的创建

函数:malloc(动态内存分配) void *malloc(unsigned int size)

1
2
3
4
5
6
7
stu* creat(int id,char str[]){//创建链表节点
stu *new;
if((new=(stu *)malloc(sizeof(stu)))==NULL){
printf("不能分配内存空间!");
exit(0);
}
}

链表查找

  • 按照值查找
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int query_value(stu *p,char name[]){//按照值查找节点,并返回节点序号
    int i=0;
    while((p!=NULL)){
    if (strcmp(p->name,name)==0){
    return i;
    }
    p=p->next;
    i=i+1;
    }
    return 0;
    }
  • 按照节点位置查找
    1
    2
    3
    4
    5
    6
    stu* query_id(stu *p,int id){//传入指针节点序号,并返回节点指针
    for (int i = 0; i < id; ++i){
    p=p->next;
    }
    return p;
    }

链表的删除

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int del_list(stu *p,int id){//传入节点序号,删除节点
stu *p1,*s;
p1=query_id(p,id-1);
if (p1==NULL){//前一个节点不存在
return -1;
}
else{
if (p->next==NULL){//被删除节点不存在
return 0;
}
else{
s=p->next;
p->next=s->next;
free(s);
return 1;
}
}
}