C++實現連結串列中可被給定數字k整除的最大和最小元素
連結串列是一種線性資料結構,其中元素透過指標連結。連結串列的每個元素或節點都包含資料部分和連結,或者可以說指向序列中下一個元素的指標。這些元素可以在記憶體中佔據非連續的位置。

我們得到一個單鏈表,其中包含資料部分和指向下一個元素的連結。另一個輸入是一個數字K。任務是找到連結串列中可被數字K整除的最大和最小元素。單鏈表只能單向遍歷。在每個節點處,我們將檢查其資料部分是否能被K整除。如果該數字是迄今為止找到的最大值或最小值,我們將更新MaxD和MinD的值。
輸入
SList : 5-->2-->10-->12-->3-->20-->7, K=5
輸出
Maximum element which is divisible by K : 20 Maximum element which is divisible by K : 5
說明 − 從頭節點開始遍歷,不斷地將資料部分除以K,並檢查它是否完全可整除,即餘數為0。
在5, 10和20中,只有5, 10和20能被5整除,其中5最小,20最大。
輸入
SList : 12-->2-->5-->18-->3-->144-->7, K=4
輸出
Maximum element which is divisible by K : 144 Maximum element which is divisible by K : 12
說明 − 從頭節點開始遍歷,不斷地將資料部分除以K,並檢查它是否完全可整除,即餘數為0。
在12和144中,只有12和144能被4整除,其中12最小,144最大。
下面程式中使用的步驟如下
建立一個連結串列節點。這裡我們建立了一個名為SLLnode的類,它具有資訊部分和下一個指標。
建立一個連結串列。這裡我們建立了一個名為SLList的類,其成員是SLLnode物件。因此,SLList由SLLnode組成。
函式addtohead(int)將節點新增到此列表。
為了向SLList新增元素,我們使用名為LIST的SLList物件呼叫addtohead(int)。
建立SLList後,我們呼叫函式Divisible(SLLnode,int),它接受列表的頭和整數K作為兩個輸入引數。
現在在Divisible函式內部,我們使用兩個變數maxD和minD來儲存連結串列中可被給定數字K整除的最大和最小元素。
maxD初始化為-1,minD初始化為9999。這被認為是輸入所在的範圍。
在for迴圈內,我們從頭開始遍歷連結串列。為此,變數start指向頭。
將每個節點的資訊部分與maxD和minD以及它與K的可整除性進行比較。如果當前節點的資訊可整除且小於minD,則用當前資訊部分更新minD。
如果當前節點的資訊可被K整除且大於maxD,則用當前資訊部分更新maxD。
列印minD和maxD中獲得的結果。
示例
#include<iostream.h>
#include<process.h>
#include<conio.h>
class SLLnode{
public:
int info;
SLLnode *next;
SLLnode(int e1,SLLnode *ptr=0){
info=e1;
next=ptr;
}
};
class SLList{
public:
SLLnode *head;
SLList()
{ head=0; }
void addtohead(int); };
void SLList::addtohead(int el)
{ head=new SLLnode(el,head); }
void Divisible(SLLnode* head, int K){
int minD=9999;
int maxD=-1;
SLLnode* start=head;
for(start;start->next!=NULL;start=start->next){
if ((start->info < minD) && (start->info % K == 0))
minD = start->info;
if ((start->info > maxD) && (start->info % K == 0))
maxD = start->info;
}
cout << "Max Element divisible by K: " << maxD << endl;
cout << "Min Element divisible by K: " << minD;
}
// Driver Code
int main(){
clrscr();
// Start with empty list
SLList LIST;
LIST.addtohead(50);
LIST.addtohead(21);
LIST.addtohead(32);
LIST.addtohead(45);
LIST.addtohead(11);
LIST.addtohead(23);
LIST.addtohead(90);
LIST.addtohead(56);
int K = 5;
Divisible(LIST.head, K);
getch();
return 0;
}輸出
如果我們執行上面的程式碼,它將生成以下輸出:
Max Element divisible by K: 90 Min Element divisible by K: 45
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP