typedef
struct lineline;
line*
initline
(line * head)
return head;
}
line *
insertline
(line * head,
int data,
int add)
else
//判斷條件為真,說明插入位置為鍊錶尾
if(body->next==
null
)else
}return head;
}
//刪除結點的函式,data為要刪除結點的資料域的值
line *
delline
(line * head,
int data)
temp=temp->next;
}printf
("鍊錶中無該資料元素");
return head;
}
void
display
(line * head)
else
temp=temp->next;
}}
//head為原雙鏈表,elem表示被查詢元素
intselectelem
(line * head,
int elem)
i++; t=t->next;
}//程式執行至此處,表示查詢失敗
return-1
;}
//更新函式,其中,add 表示更改結點在雙鏈表中的位置,newelem 為新資料的值
line *
amendelem
(line * p,
int add,
int newelem)
temp->data=newelem;
return p;
}
#include
#include
typedef
struct lineline;
//雙鏈表的建立
line*
initline
(line * head)
;//雙鏈表插入元素,add表示插入位置
line *
insertline
(line * head,
int data,
int add)
;//雙鏈表刪除指定元素
line *
delline
(line * head,
int data)
;//雙鏈表中查詢指定元素
intselectelem
(line * head,
int elem)
;//雙鏈表中更改指定位置節點中儲存的資料,add表示更改位置
line *
amendelem
(line * p,
int add,
int newelem)
;//輸出雙鏈表的實現函式
void
display
(line * head)
;int
main()
line*
initline
(line * head)
return head;
}line *
insertline
(line * head,
int data,
int add)
else
//判斷條件為真,說明插入位置為鍊錶尾
if(body->next==
null
)else
}return head;
}line *
delline
(line * head,
int data)
temp=temp->next;
}printf
("鍊錶中無該資料元素");
return head;
}//head為原雙鏈表,elem表示被查詢元素
intselectelem
(line * head,
int elem)
i++; t=t->next;
}//程式執行至此處,表示查詢失敗
return-1
;}//更新函式,其中,add 表示更改結點在雙鏈表中的位置,newelem 為新資料的值
line *
amendelem
(line * p,
int add,
int newelem)
temp->data=newelem;
return p;
}//輸出鍊錶的功能函式
void
display
(line * head)
else
temp=temp->next;
}}
資料結構與演算法 雙向鍊錶
雖然從表內第乙個節點到最後乙個節點的遍歷操作是非常簡單的,但是反向遍歷鍊錶卻不是一件容易的事情。如果為node類新增乙個欄位來儲存指向前乙個節點的連線,那麼久會使得這個反向操作過程變得容易許多。當向鍊錶插入節點的時候,為了吧資料複製給新的字段會需要執行更多的操作,但是當腰吧節點從表移除的時候就能看到...
資料結構與演算法 雙向鍊錶
ps 前面已經說過線性表的兩種表現形式,一種是順序,另一種是鏈式,鏈式的一種普通表現形式就是加入乙個指標,前乙個的指標指向後乙個結點的位址,那麼還有一種形式就是雙向鍊錶,裡面又加上了乙個指標變數,讓前指標變數指向直接前驅,後指標變數指向直接後繼。建立結構體 typedef struct double...
資料結構與演算法 資料結構之雙向鍊錶
雙向鍊錶自我感覺修改的時候有點繞,不過還好,如果實在不理解一定記得畫圖,其實很容易,但是想出來容易漏掉一些步驟,總之就是多動手 package org.yc public class test class doublelinkedlistheadelse temp.next studentnode ...