//鍊錶合併演算法(包括一些基本運算)
#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 每個節點是乙個物件,有自己的標識...