我正在寫一個程序,調用main中的一個函數來創建一個節點來構建一個鏈表。該程序從文件中讀取要放置在節點中的字符。程序運行良好,直到它進入創建節點的函數。我不確定是否存在邏輯或語法錯誤或其他問題。對不起,但錯誤離開頭不遠。另外,讓我知道你是否想要我的頭文件。代碼來自我的C書:計算機科學:一種使用C的結構化編程方法,第三版。任何幫助(和我的錯誤解釋)將不勝感激!如何使用malloc在鏈表中插入節點?
謝謝!
這裏的main.c:
#include "my.h"
int main (int argc, char* argv[])
{
int y;
NODE* pList;
NODE* pPre;
NODE* pNew;
DATA item;
FILE* fpntr;
int closeResult;
pList = NULL;
fpntr = fopen(argv[1], "r"); // open file
if(!fpntr)
{
printf("Could not open input file.\n");
exit (101);
}
else printf("The file opened.\n");
printf("starting InNode.\n"); //testing to see if this is working
while((y = fscanf(fpntr, "%c", &(item.key))) != EOF)
pList = InNode(pList, pPre, item);
printf("end InNode.\n"); //testing to see if this is working, doesn't get this far
printf("starting printme.\n");
printme(pList);
printf("end printme.\n");
closeResult = fclose(fpntr); //close file
if(closeResult == EOF)
{
printf("Could not close input file.\n");
exit (102);
}
else printf("The file closed.\n");
free(a);
return 0;
}
這裏的InNode.c(直接從我的書):
#include "my.h"
NODE* InNode (NODE* pList, NODE* pPre, DATA item)
{
NODE* pNew;
printf("start malloc.\n"); //testing to see if this is working
if (!(pNew = (NODE*) malloc(sizeof(NODE))))
printf("Memory overflow in insert.\n");
exit(100);
printf("malloc complete.\n"); //testing to see if this is working, doesn't get this far
pNew->data = item;
printf("start if statement.\n");
if (pPre == NULL)
{
pNew->link = pList;
pList = pNew;
}
else
{
pNew->link = pPre->link;
pPre->link = pNew;
}
printf("end else statement.\n");
return pList;
}
謝謝,這工作(如WEEL爲initializig PPRE)之前初始化
pPre
。對不起,關於輸出。我會在下一次做筆記! – Piseagan@Piseagan很高興能幫到你!是的,初始化pPre也很重要。我也剛剛注意到你已經發表了評論,說明它停止了工作,但是我沒有看到那個評論,因爲它太偏離了右邊。所以,你確實發佈了我正在尋找的信息(它死的地方),但格式可能會更好。 –