我想插入隊列中的3個元素,然後提取它們中的每一個。每次提取後,我打印剩餘的元素。問題是,在最後一個元素,它表明我已經提取了正確的元素,但該元素仍然在隊列中。從隊列中提取元素,然後打印元素 - 在最後一個元素不起作用
的輸出是這樣的: 打印:8 1 4
提取:4 打印:8 1
提取:1個 打印:8
提取:8 打印:8 ---->這是問題。應該是:「沒有元素!」
#include<malloc.h>
#include<stdio.h>
struct Nod{
int id;
Nod* next;
};
Nod* insert(Nod* nod,int id){
Nod* nou = (Nod*)malloc(sizeof(Nod));
nou->id = id;
nou->next = 0;
if (nod == 0)
nod = nou;
else
{
nou->next = nod;
nod = nou;
}
return nod;
}
int extract(Nod* nod){
if (nod->next == 0){
Nod* temp = nod;
nod = 0;
return temp->id;
}
else
{
Nod* temp = nod;
while (temp->next->next)
temp = temp->next;
Nod* aux = temp->next;
temp->next = 0;
return aux->id;
}
}
void print(Nod* nod){
if (nod == 0)
printf("\nNo elements !\n");
else
{
printf("\nPrint : ");
Nod* temp = nod;
while (temp){
printf("%d ",temp->id);
temp = temp->next;
}
printf("\n");
}
}
void main(){
Nod* nod = 0;
///////////
nod = insert(nod, 4);
nod = insert(nod, 1);
nod = insert(nod, 8);
print(nod);
///////////
int r = extract(nod);
printf("\nExtracted : %d",r);
print(nod);
///
int y = extract(nod);
printf("\nExtracted : %d", y);
print(nod);
///
int p = extract(nod);
printf("\nExtracted : %d", p);
print(nod);
}
它的工作原理,但我用Nod **點頭。謝謝 ! – Mihai
@downvoter。如果你發表評論會很好。 –