資料結構之鍊錶合併演算法

2021-08-26 13:13:32 字數 1413 閱讀 9497

//鍊錶合併演算法(包括一些基本運算)

#includeusing namespace std;

typedef char datatype; //結點資料型別,假設為char

typedef struct node * pointer; //結點指標型別

struct node //結點結構

;typedef pointer lklist; //單鏈表型別,即頭指標型別

//鍊錶初始化

lklist initlist() //建立乙個只有頭結點的空表

//尾插法建表

lklist creat() //有頭結點,返回表頭結點

rear->next=null;

return head;

}//求表長

int length(lklist head)

return j; //返回鍊錶長度

}//查詢(按序號)

pointer find(lklist head,int i)

return p;

}//定位(按值查詢)

pointer locate(lklist head,datatype x)

return p;

}//插入演算法

int insert(lklist head,datatype x,int i)

//無第i-1點

s=new node; //生成新結點

s->data=x;

s->next=q->next; //新結點的後繼是原第i個點

q->next=s; //原第i-1個點的後繼是新點

return 1; //插入成功

}//刪除運算

int delete(lklist head,int i)

p=q->next; //儲存待刪除結點的位址,用於釋放空間

q->next=p->next; //修改前驅的指標

delete p; //釋放已刪除的結點的空間

return 1; //刪除成功

}//鍊錶合併(就地進行)

lklist purge(lklist a,lklist b)

else

}if(p!=null) r->next=p; //a表還有剩餘結點

else r->next=q;

delete b; //釋放b結點

return c;

}//輸出鍊錶所有結點

int display(lklist head)

return 1;

}//主函式只驗證鍊錶合併演算法結果

int main()

資料結構之合併鍊錶

題目 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則 分析 鍊錶1的頭結點小於鍊錶2的頭結點,那麼鍊錶1的頭結點將是合併後鍊錶的頭結點,如果鍊錶2的頭結點小於鍊錶1的頭結點那麼鍊錶2的頭結點將是合併後剩餘節點的頭結點,當我們把兩個鍊錶中值較小的頭結點鏈結到...

資料結構與演算法之鍊錶

鍊錶的分類 1 單鏈表 頭插法 只需要維護乙個頭結點即可,常用來模擬堆疊 尾插法 需要維護頭結點和尾結點,常用來模擬佇列。2 雙向鍊錶 雙向遍歷,可以用來儲存網頁的歷史記錄等 3 迴圈鍊錶 經常出現在面試題中,判斷鍊錶是否有環。鍊錶的刪除 方式一 維護兩個指標,current 表示當前節點 和pre...

資料結構與演算法之鍊錶

線性表 線性表的定義 一些元素的序列,維持著元素之間的線性關係。實現線性表的基本需要是 1 能夠找到表首元素 2 從表裡的任意元素出發,能找到它之後的下乙個元素 基於鏈結技術實現的線性表稱為鍊錶。單鏈表 單鏈表的特點總結如下 1 乙個單鏈表由一些具體的表結點組成 2 每個節點是乙個物件,有自己的標識...