單鏈表與有序雙鏈表的實現

2022-06-06 00:57:17 字數 1868 閱讀 8399

單鏈表的實現:

描述定義單鏈錶類,建立帶頭結點的單鏈表(節點型別為整型資料),要求包含以下成員函式:

頭插法建立單鏈表(利用建構函式實現)

尾插法建立單鏈表(過載建構函式實現)

鍊錶的遍歷

按值刪除乙個節點

按位置刪除乙個節點

鍊錶的析構

輸入輸入一組資料,以尾插法的形式建立單鏈表(0表示輸入結束)(構造第乙個鍊錶)

輸入一組資料,以頭插法的形式建立單鏈表(0表示輸入結束)(構造第二個鍊錶)

輸入要刪除元素的值(在尾插法建立的鍊錶中進行改操作)

輸入要刪除元素的位置(在尾插法建立的鍊錶中進行改操作)

輸出輸出尾插法建立鍊錶的結果

輸出頭插法插法建立鍊錶的結果

輸出按值刪除之後鍊錶中剩餘的元素(若刪除的元素不存在,輸出error)

輸出按位置刪除之後鍊錶中剩餘的元素(若刪除的元素不存在,輸出error

樣例輸入

1 2 3 4 5 0 

1 2 3 4 5 0

20

樣例輸出

1 2 3 4 5

5 4 3 2 1

1 3 4 5

error

**:

#include#include#includeusing namespace std;

struct node

};class list

list(int a,int n);//頭插法

list(int a,int n,int m);//尾插法

void listdel(int n);//按位查詢

void listremove(int num);//按值查詢

};list::list(int a,int n)

node *p;

p=first->next; //設立指標p並移動指標輸出

while(p!=null)

}list::list(int a,int n,int num)

p->next=null;

node *q;

q=head->next; //設立指標q並移動指標輸出

while(q!=null)

}void list::listdel(int n)//按位

p=p->next;

}if(!flag) cout<<"error";

else

}}void list::listremove(int num)

p=p->next;

}if(!flag) cout<<"error";

else

}}int a[1000001],b[1000001];

int main()

};class list

list(int a,int n);

void in(int a,int n);

void del(int a,int n);

void out();

~list() {}

};void list::out()

}list::list(int a,int n)

p=p->next;

}if(!flag)

}out();

}}void list::in(int a,int n)

p=p->next;

}if(!flag)

}out();

}void list::del(int a,int n)

p=p->next;}}

out();

}int a[100000],n,m,tmp;

int main()

有序雙鏈表的實現

總時間限制 100000ms 記憶體限制 655360kb 描述定義有序的雙鏈錶類,鍊錶中儲存整型資料,建立帶頭結點的有序雙鏈表,要求包含以下成員函式 雙鏈表的建構函式 非空的鍊錶,輸入資料為0,表示輸入結束 插入操作 將乙個資料元素插入到有序的雙鏈表中,插入之後鍊錶仍然有序,輸入資料為0表示插入操...

單鏈表與雙鏈表佇列

一,鍊錶分類 單鏈表與雙向鍊錶 三,定義類 1 node類 傳值與重寫get,set方法 2 linknodelist類 將對資料的增刪差改的基本操作方法或屬性 3 main 主函式類,進行資料的呼叫 四,單鏈表的示例 public class linklistnode else 設定新節點為最後乙...

單鏈表 雙鏈表

實現乙個單鏈表,鍊錶初始為空,支援三種操作 1 向煉表頭插入乙個數 2 刪除第k個插入的數後面的數 3 在第k個插入的數後插入乙個數 現在要對該鍊錶進行m次操作,進行完所有操作後,從頭到尾輸出整個鍊錶。注意 題目中第k個插入的數並不是指當前鍊錶的第k個數。例如操作過程中一共插入了n個數,則按照插入的...