首先我們來看雙向鍊錶的定義 :
typedef int elemtype;示意圖大概是這樣的typedef struct node * ptrtonode;
typedef ptrtonode position;
struct dlistnode;
typedef dlistnode * dlist;
typedef struct node
node;
struct dlistnode
dlistnode是什麼呢?相當於乙個指路牌,讓你可以直接走向頭結點或尾節點。
雙向鍊錶要注意的是,如果只有乙個節點 a,那麼a既是頭結點,也是尾節點。
所以我們在寫插入刪除操作的時候要進行分類討論。
2264,插入 i
void insertathead(dlist l, elemtype x)//鍊錶鏈結的時候基本準則都是先連線再斷開,雖然兩個指標操作有點麻煩,但是還是比較好理解的else
l->size++;
}
2265 插入2
void insertattail(dlist l, elemtype x)2271,刪除 ielse
l->size++;
}
void delfirst(dlist l, elemtype *e)2272 刪除 iielse
*e = p->data;
free(p);
l->size--;
}
void dellast(dlist l, elemtype *e)鍊錶清空(非銷毀的時候)要把每項數字清零,並改正size的值(head、tail指向空別忘了)else
*e = p->data;
free(p);
l->size--;
}
2275 雙向鍊錶的清空
void clearlist(dlist l)其他的插入刪除思路可以參考上面,剩下的比較簡單就不說了l->size = 0;
l->head = null;
l->tail = null;
}
1 5 雙向鍊錶
實現 public class doublelinkedlistdemo 鍊錶操作類 class doublelinkedlist 新增節點 同單向,但有點區別,加上前乙個指標 public void add heronode2 heronode2 temp.next heronode2 heron...
20 雙向鍊錶
1 define crt secure no warnings 23 include4 include5 include67 define ok 1 8 define error 0 9 define true 1 10 define false 0 1112 typedef int elemtyp...
06 雙向鍊錶
修改 原理與單鏈表相同 刪除public class doublelinkedlist 新增結點到雙向鍊錶 追加 public void add heronode2 node 按編號順序將結點到鍊錶 如果有這個排名,則新增失敗,並給出提示 public void insertbyorder hero...