雙向鍊錶的查詢與刪除

2022-04-28 14:06:48 字數 1058 閱讀 3640

雙向鍊錶的查詢工作

解析:使用next指標遍歷,直到找到資料為data的節點,如果找到節點,返回節點,否則返回null;

//查詢節點,成功則返回滿足條件的節點指標,否則返回null;

dbnode *findnode(dbnode *head,int data)

{dbnode *pnode=head;

if(head==null)

return null;

while(pnode->next!=null &&pnode->data!=data)

pnode=pnode->next;

if(pnode->next==null)

return null;

return pnode;

在雙向鍊錶中節點p之前插入乙個節點的操作運算如下(c描述):

void dinsert(dlinklist *p,datatye x)

dlinklist *s;//插入節點

s=(dlinklist *)malloc(sizeof(dlinklist));

s->data=x;//儲存資料x

s->next=p;//s的next指標指向p

p->prior->next=s;//p的前面的節點的next指向s

s->prior=p->prior;//

p->prior=s;

在雙向鍊錶中刪除節點p:

void delete(dlinklist *p)

p->prior->next=p->next;

p->next-prior=p->prior; 

free(p);

迴圈鍊錶的許多操作都是在首尾位置進行的,因此使用指向迴圈鍊錶末尾節點的指標來標誌乙個線性表,實現某些操作會更容易。使用rear來標誌迴圈鍊錶的末尾節點;例如:將倆個線性鍊錶l1,l2合併成乙個表時,使用設立尾指標的迴圈鍊錶表示時,設表l1用rear1表示,l2為rear2表示,l2從l1末尾開始接,只需要下面五句話;

p=rear1->next;q=rear2->next;rear1->next=q->next;rear2->next=p;free(q);

雙向鍊錶的建立插入與刪除

雙向鍊錶的建立插入與刪除 注意因為建表時用了字元型資料所以輸入數字時只能輸0 9 include includetypedef struct node node,list list tailcreat 尾插法建立鍊錶 void insert list head,int x,char value,in...

雙向迴圈鍊錶的插入與刪除

關於解釋部分不再多說了,網上資料很多,下面就介紹具體的實現吧 雙向迴圈鍊錶的插入與刪除 typedef struct nodednode,dlinklist 在帶有頭結點雙向迴圈鍊錶中第1個資料域內容為x的結點右邊插入乙個資料資訊為item的新結點 void insert dlinklist lis...

雙向迴圈鍊錶的建立 查詢 新增 刪除

雙向迴圈鍊錶的建立 查詢 新增 刪除 include include typedef struct lnodelnode,dlinklist 尾插法建立雙向鍊錶 dlinklist create dlinklist l,int n return l void menu 獲取雙向迴圈鍊錶中某一元素的值...