我有這段代碼。它會刪除數據,但它必須逐個刪除顯示用戶刪除內容的數據。它必須從頭到尾和頭尾刪除。如何在鏈接列表中刪除
#include<stdio.h>
#include<stdlib.h>
typedef struct _node {
int data;
struct _node *next;
} node;
int addnode(node *head, char c){
node *temp;
temp = (node *) malloc(sizeof(node));
temp->data=c;
temp->next=head->next;
head->next=temp;
return 0;
}
int deletenode(node *head){
struct node *x;
node *prev = head;
while(prev->next != NULL && prev->next != x)
prev = prev->next;
if(prev->next==NULL)
return;
prev->next=prev->next->next;
free(x);
return;
}
int main(void){
node head, *current;
head.next=NULL;
addnode(&head, 'a');
addnode(&head, 'b');
addnode(&head, 'c');
current=head.next;
while(1){
printf("%c", current->data);
if(current->next == '\0') break;
current=current->next;
}
printf("-%c", deletenode(&head));
printf("-%c", deletenode(&head));
printf("-%c", deletenode(&head));
return 0;
}
我的代碼只打印: C B A - - - 預先感謝
'deletenode'不返回任何內容。它甚至編譯? –
您的程序編譯時會發出警告。你正在聲明一個你沒有在任何地方定義的結構節點(應該是節點或結構_node) – Guillaume
什麼是你想要問的實際? 噢 - ''deletenode'函數中的''x似乎沒有初始化... – Matso