- 大量懸賞 數據結構的問題 自己是新手 實在搞不懂 求大神幫忙
-
最佳回答:
是要題目的翻譯麼?
實現一個鏈表及以下操作
- 插入,給定Key值,找到擁有該Key值的節點,並把新節點插入此節點後。若沒有在鏈表中找到該Key值,打印出錯誤信息。
- 刪除,給定Key值,找到擁有該Key值的節點並刪除。若沒有在鏈表中找到該Key值,打印出錯誤信息。
- 查詢前序節點,給定Key值,找到擁有該Key值的節點的前序節點。若沒有在鏈表中找到該Key值,打印錯誤信息。
- 顯式整個鏈表,若鏈表為空,則顯示鏈表為空。
從文件中讀取操作並構建鏈表。文件中每一行代表了一組操作。你可以認為文件中不包含重復的key值,並且key值總是正數。
- i x y,表示在key值為x的節點後,插入一個key值為y的節點
- i x -1,表示在表頭插入一個key值為x的節點
- d x,表示在鏈表裡刪除key值為x的節點
- f x,找到key值為x的前序節點,並打印出前序節點。
- p,從頭打印出鏈表中所有的節點
lab2_input.txt是輸入文件
- i 3 -1: 在表頭插入key為3的節點。此後鏈表只有一個節點[Head -> 3]
- i 4 3:在key為3的節點後,插入key為4節點。此後鏈表有2個節點[Head -> 3 -> 4]
- i 7 -1:在表頭插入key為7的節點。此後鏈表有3個節點[Head -> 7 -> 3 -> 4]
- i 5 8:在key為8的節點後,插入key為5的節點。由於鏈表中沒有key為8的節點,此時打印“Insertion(5) Failed: element 8 is not iin the list”
- d 3:刪除key為3的節點。此後鏈表有2個節點[Head -> 7 -> 4]
- i 2 7:在key為7的節點後,插入key為2的節點。此後鏈表[Head -> 7 -> 2 -> 4]
- d 9:刪除key為9的節點。由於鏈表中沒有key為9的節點,此時打印"Deletion failed: element 9 is not in the list"
- f 3:找到key=3的前序節點,由於鏈表中沒有key為3的節點,此時打印"Could not find 3 in the list"
- f 7:找到key=7的前序節點,7的前序節點是當前鏈表的表頭,此時打印"Key of previous node of 7 is header"
- f 2:找到key=2的前序節點,2的前序節點是key為7的節點,此時打印"Key of previous node of 2 is 7"
- p:打印鏈表,[Head -> 7 -> 2 -> 4],此時打印"Key:7 Key:2 Key:4"
後面就是寫個p2.c的文件,在裡面實現這些功能。
數據結構和函數的定義,如下
typedef struct Node *PtrToNode;
typedef PtrToNode List;
...
List MakeEmpty(List L);
題目大概意思就是這個...代碼自己寫呗~~