問題及**:
/*
*檔名稱 :mian.cpp
*作 者 :李楠
*完成日期 :2023年1月18日
*版 本 號 :v1.0
* *問題描述 :下面是乙個建立動態鍊錶的程式。閱讀程式,在草稿紙上畫出鍊錶建立的過程,
藉此學會如何建立鍊錶。然後按要求改造程式。
*輸入描述 :在上面的程式基礎上定義下面的函式,實現相應的功能。
為簡便起見,每編寫乙個函式,立刻在main函式中呼叫進行測試。
(1)編寫make_list2()函式建立鍊錶,使建立鍊錶時,後輸入的資料,將新輸入的數字對應的結點放在鍊錶末尾。
若輸入為3 5 2 9 4 7 0,建立的鍊錶為:
(2)編寫函式void search(int x),輸出鍊錶中是否有值為x的結點。
(3)編寫函式delete_first_node(),刪除鍊錶中的第乙個結點。
(4)編寫函式delete_node(int x),刪除結點值為x的結點。
(5)編寫make_list3()函式建立鍊錶,使建立鍊錶時,使結點中的資料呈現公升序。若輸入為3 5 2 9 4 7 0,建立的鍊錶為:
(6)編寫函式void insert(int x),將值為x的結點插入到由make_list3建立起來的有序鍊錶中。
*程式輸出 :略
*/
#include using namespace std;
struct node
;node *head=null; //將煉表頭定義為全域性變數,以便於後面操作
void make_list(); //建立鍊錶
void out_list(); //輸出鍊錶
void make_list2(); //建立鍊錶2
void search(int x); //輸出鍊錶中是否有值為x的結點
void delete_first_node(); //刪除列表中的第乙個結點
void delete_node(int x); //刪除結點值為x的結點
void make_list3(); //使建立鍊錶時。使結點中的資料呈現公升序
void insert(int x); //將值為x的結點插入到由make_list3建立起來的有序鍊錶中
int main( )
void make_list()
return;
}void out_list()
cout<>n;
while(n>0) //輸入若干正數建立鍊錶,輸入非正數時,建立過程結束
return;
}void search(int x)
else
p=p->next;
}if(flag==1)
cout<
delete p;
cout
if(head!=null)
else //q不該刪除,繼續考察下乙個
q=p->next; //總是p的下乙個結點}}
}return;
}void make_list3()
for(j=1;j<=n-1;j++)
for(i=0;ia[i+1])
i=0;
while(a[i]>0) //輸入若干正數建立鍊錶,輸入非正數時,建立過程結束
return;
}void insert(int x)
//應該找到合適的位置後,將結點插入
//此時,鍊錶中至少已經有乙個結點,且插入結點不是首結點
else
if(q==null) //q為null,作為最後乙個結點直接插入到p後即可
else //t插入到p和q之間}}
return;
}
執行結果:
知識點總結:
鍊錶的知識學習了好長時間了,忘了很多,又看了一遍課堂實錄才一點一點記憶起來,不過還有些細節沒有記起來,一點點學吧…
學習心得:
考試之前的心思不在學習新課上,所以學的不牢固,幸虧有個假期作業~
動態建立鍊錶及列印鍊錶 (鍊錶學習 一)
動態建立鍊錶主要思想 定義三個執行結構體型別資料的指標,head,p1,p2,當輸入的值p1 num不為0並且為第乙個節點的時候,把該節點賦給頭結點 p1這個指標,主要是用來指向剛輸入過資料的節點,p2這個指標,主要負責把p1剛輸入的資料的這個節點加到鍊錶中來。當輸入為0時程式結束,返回頭結點,具體...
靜態鍊錶和動態鍊錶
鍊錶分為兩種 動態和靜態 動態的結合相關函式能動態開闢記憶體,特點就是不會浪費記憶體單元 靜態鍊錶則沒有這個優點。靜態鍊錶和動態鍊錶是線性表鏈式儲存結構的兩種不同的表示方式。靜態鍊錶的初始長度一般是固定的,在做插入和刪除操作時不需要移動元素,僅需修改指標。動態鍊錶是相對於靜態鍊錶而言的,一般地,在描...
鍊錶 共用體
define crt secure no warnings include include include define len sizeof struct student 靜態鍊錶 struct student int main1 while p null 建立單向動態鍊錶 思路 讓p1指向新開闢...