判断链表是否为末尾:
int IsLast(NODE*p)//p为前驱元的next 。 { return *p.next==NULL; } //0为非末尾,1为末尾。 寻找链表中的某一个元素: NODE*find(int x,NODE*head)//读入需要的寻找的元素,和链表的头指针。 { NODE*p; p=head; for(;*p.next!=NULL&&*p.elem!=x;) p=*p.next; return p; } //返回找到的元素的地址 删除某一个特定的链表(给定链表的前驱元的地址): #include<stdlib.h>//需要包含stdlib头文件。 void Delete(NODE*p)//给定需要删除的链表前驱元的地址(如未给定可用find函数的变体). { NODE*temp; temp=*p.next; *p.next=temp.next; free(temp); } 插入某一个链表: void insert(NODE*p)//此处插入前面(依旧是用find的变体函数寻找)(题目中要注意插入的位置) NODE*new_struct; new_struct=(NODE*)malloc(LEN); scanf("%d",&(*new_struct.elem)) *new_struct.next=*p.next; *p.next=new_struct; }删除整个表的方法: void delete_list(NODE*head)//free函数必须是需要释放的结构体的地址。 { NODE*p=head; head=NULL; while(*p.next!=NULL); { NODE*temp; temp=*p.next; free(p); p=temp; } free(p);//末尾因为.next是null所以不执行,需要单独释放。 }