#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
/*Define custom functions */
void insertElement();
bool elementExists();
int getNumElements();
/*Create linked list */
struct node {
int number;
int occurence;
struct node *next;
};
/*Call our linked list freqTable */
struct node *freqTable = NULL;
unsigned int numElements = 0;
int main(){
int readNumElements = 0;
int i = 0;
int newNum, status;
status = scanf("%d", &readNumElements);
if(status == -1){
fprintf(stderr, "%d is not a number\n", readNumElements);
exit(-1);
}
for (i = 0; i < readNumElements;i++) {
status = scanf("%d", &newNum);
if(status == -1){
fprintf(stderr, "%d is not a number\n", newNum);
exit(-1);
}
if(elementExists(newNum)){
printf("%d exists\n", newNum);
}else{
insertElement(&freqTable, newNum);
}
}
return 0;
}
void insertElement(struct node **list, int n){
struct node *new_input;
new_input = malloc(sizeof(struct node));
if(new_input == NULL){
fprintf(stderr,"Error: Failed to create memory for new node\n");
exit(EXIT_FAILURE);
}
new_input->number = n;
new_input->occurence = 1;
new_input->next = *list;
numElements++;
*list = new_input;
}
bool elementExists(int n){
printf("%d\n", freqTable->number);
return false;
}
int getNumElements(){
return numElements;
}
好吧,繼承人我得到了什麼。這應該編譯。C鏈表搜索功能
問題出現在
if(elementExists(newNum)){
printf("%d exists\n", newNum);
}else{
insertElement(&freqTable, newNum);
}
我得到的分割錯誤,我不知道爲什麼。
代碼的其餘部分在哪裏? – NullUserException 2010-09-25 03:22:22
如果你永遠不會分配一個節點並將其分配給'freqTable'變量,那麼總是要訪問內存位置0 +一些偏移量,以保證分段錯誤! – 2010-09-25 03:24:12
我這樣做,我有一個插入功能。就像它說它在主要工作。我可以通過執行freqTable-> number來打印最後一個元素。我也可以做freqTable-> next->數字等等......我不能在我的elementExists函數中做到這一點。 – Matt 2010-09-25 03:30:09