我一直在試圖創建一個簡單的C鏈表,但我有非常有趣的結果不可能的結果在C鏈表
這裏是我的代碼:
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
typedef char * String;
typedef struct node{
String value;
struct node * next;
struct node * prev;
}Node;
struct node * createLinkList(){
struct node * root=malloc(sizeof(Node));
root->value="head";
root->prev=NULL;
root->next=NULL;
return root;
}
Node * insert(String val,Node * root){
Node * tempNode=root;
Node * newNode=malloc(sizeof(Node));
printf("head value : %s\n",tempNode->value);
while(tempNode->next != NULL){
tempNode=tempNode->next;
printf("latest node value : %s\n", tempNode->value);
}
newNode->prev=tempNode;
newNode->next=NULL;
newNode->value=val;
printf("newly added node value : %s\n", newNode->value);
tempNode->next=newNode;
return root;
}
int main (int argc, char const *argv[])
{
Node * dblList=createLinkList();
String val=malloc(sizeof(char)*100);
for (int i = 0; i < 2; ++i)
{
printf("please enter value(node #%i): ",i);
scanf("%s",val);
dblList=insert(val,dblList);
}
}
這裏是結果是我有:
please enter value(node #0): one
head value : head
newly added node value : one
please enter value(node #1): two
head value : head
latest node value : two
newly added node value : two
任何人能解釋一下是怎麼回事???? 我的意思是當我輸入第二個值時 最近的節點值必須是我輸入的第一個值,但是它是新輸入的值!
它是一個堆棧溢出或我做錯了什麼!?
編譯所有警告和調試信息(例如'gcc -Wall -g')。然後**使用調試器**(例如'gdb')。你也可以使用'%p'格式控制來調試打印指針... –
我已經使用gcc -o 4編譯了它4.c -mmacosx-version-min = 10.5 -Wall -g' – abzcoding