| NODE *insert(NODE *h,int x) { NODE *new,*front,*current=h; while(current!=NULL&&(current->data<x)) /*查找插入的位置*/ { front=current; current=current->next; } new=(NODE *)malloc(sizeof(NODE)); new->data=x; new->next=current; if(current==h) /*判斷是否是要插在表頭*/ h=new; else front->next=new; return h; } |
刪除結點:
| NODE *delete(NODE *h,int x) { NODE *q,*p=h; while(p!=NULL&&(p->data!=x)) { q=p; p=p->next; } if(p->data==x) /*找到了要刪的結點*/ { if(p==h) /*判斷是否要刪表頭*/ h=h->next; else q->next=p->next; free(p); /*釋放掉已刪掉的結點*/ } return h; } |
經常有鏈表相關的程序填空題,做這樣的題要注意看下面提到的變量是否定義了,用到的變量是否賦初值了,是否有給分配空間的沒有分配空間,最后看看返回值是否正確。
筆者水平有限,難免有疏漏、錯誤的地方,淺顯之處,還望指正見諒。上述內容僅是個提示作用,并不包括C語言的全部內容





