我試圖創建一個程序,用下面的格式的文本文件中讀取:我的鏈表程序將無法正常工作
Smith, John
Johnson, Harry
Clark, David
(這可以無休止地繼續下去,有沒有需要在每個名稱之間的空行,我只是爲了清晰起見而這樣寫的)
該文本文件的每一行都包含:last name
,first name
。鏈表應該存儲每個名字和姓氏作爲名字節點。但是,我相信我的總體架構應該能夠工作,但是,隨着程序的執行,似乎像pCurrent
和pHead
這樣的變量正在被重新調整而不會被重新分配。我留下了一個亂七八糟的鏈表,我從來沒有見過這樣的事情。任何人都可以發現我的架構或其他任何可能導致此程序無法按預期工作的缺陷。由於
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
struct nameNode {
char* first;
char* last;
struct nameNode* pNext;
struct nameNode* pPrev;
};
struct nameNode* pHead, *pLast;
char firstName[50], lastName[50];
void insert_end(char* first, char* last) {
struct nameNode* var = NULL, *temp = NULL;
var = (struct nameNode*)malloc(sizeof(struct nameNode));
var->first = first;
var->last = last;
if (pHead == NULL) {
pHead = var;
pHead->pPrev = NULL;
pHead->pNext = NULL;
pLast = pHead;
} else {
pLast = pHead;
while (pLast != NULL) {
temp = pLast;
pLast = pLast->pNext;
}
pLast = var;
temp->pNext = pLast;
pLast->pPrev = temp;
pLast->pNext = NULL;
printf("Phead is %s\n", pHead);
}
}
int main() {
char file[100];
printf("Enter input file ");
scanf("%s", file);
FILE* in_file = fopen(file, "r");
while (fscanf(in_file, "%s %s", lastName, firstName) != EOF) {
insert_end(lastName, firstName);
}
}
此問題似乎是無關緊要的,因爲它不會創建最小,完整和可驗證示例。 – haccks 2014-09-23 21:05:35
將這三個名稱複製到文本文件中,然後在出現提示時編寫地址並檢查鏈接列表。這是一個完整的例子,對嗎?另外,我還可以添加一條打印語句來告訴程序員,如果這將有助於問題變得更加明顯,那麼pHead與while循環的每次迭代是否相等? – user3451026 2014-09-23 21:09:38