2014-03-01 3 views
1

codepad link나는 double pointers.but를 사용하여 연결된 목록에 삽입하려고합니다. 스택 오버플로에서 다른 링크를 따라 갔다. .i는 위치 1에 삽입하기위한 코드를 유지했다. 출력에서 ​​이전 삽입은 사라진다.이중 포인터를 사용하여 단일 연결 목록에 삽입하는 방법은 무엇입니까?

struct node 
{ 
     int data; 
     node *next; 
}; 

void insert(node **head,int k,int pos)//k refers to the element to be inserted 
{ 
    if(pos==1) 
    { 
    node *newnode=(node *)malloc(sizeof(node)); 
    newnode->data=k; 
    newnode->next=*head; 
    *head=newnode; 
    } 
} 

    void print(node **head) 
    { 
    printf("the elements are.. "); 
    while(*head!=NULL) 
    { 
     printf("%d ",(*head)->data); 
    (*head)=(*head)->next; 
    } 
    printf("\n"); 
    } 
    int main() 
    { 
     insert(&head,5,1); 
     print(&head); 
     insert(&head,4,1); 
     print(&head); 
     return 0; 
    } 

불쌍한 들여 쓰기를 위해. 초보자 나를 도와주세요.

+1

이 유효 C 코드가 아닙니다. 컴파일하고 실행중인 * 실제 * 코드를 복사하여 붙여 넣으십시오. 또한, * 작동하지 않는 방법을 알려주십시오. –

+0

어쩌면 이것은 당신이 찾고있는 것을 설명 할 것입니다 : http://www.macs.hw.ac.uk/~rjp/Coursewww/Cwww/linklist.html – theldoria

+0

codepad.org 또는 이와 비슷한 언어로 부르지 않는 이유는 무엇입니까? –

답변

1

인쇄 기능이 잘못되었습니다. 줄을 지우고 있습니다 (*head)=(*head)->next;. 당신은 출력 다음 받게됩니다

void print(node **head) 
    { 
    printf("the elements are.. "); 
    node *temp = *head; 
    while(temp!=NULL) 
    { 
     printf("%d ",temp->data); 
    temp=temp->next; 
    } 
    printf("\n"); 
    } 

에 변경 기능 :

요소가 있습니다 .. 5
요소가 있습니다 ... 4 5

+0

머리가 다음 위치에 가지 않는 이유를 제발 설명해 주시겠습니까 – saimadan

+0

. 그러나 새로운 가치는 머리에 할당됩니다. 그래서'print (&head);'두 번째로 잘못된 결과를받는 경우 – Avt

+0

실수를 식별하기 위해 실제 포인터를 고쳐 주겠다. – saimadan

0

확인해보세요.

struct node //Missed struct's name 
{ 
    int data; 
    node *next; 
}; 

void insert(node **head,int k,int pos)//k refers to the element to be inserted 
{ 
    if(pos==1) 
    { 
     node *newnode= new node(); 
     newnode->data=k; 
     newnode->next=*head; //You called head which is not a member of node's struct 
     *head=newnode; 
    } 
} 

int main() 
{ 
    node *head=NULL; 
    insert(&head,5,1); 
    insert(&head,4,1); 
} 
+0

* 머리에서 함수를 전달하고 C++에서 struct word를 생략 할 수 있습니까? 내가 틀렸다면 나를 바로 잡으세요. – saimadan

+0

아니요, 할 수 없습니다. & 당신은 C++에서이 작업을 수행 할 수 없습니다 를 예를하지 않고 구조체의 멤버 "* 머리를"전화 해야지 -Unnamed 구조체 : -Struct이 따르지 구조체 { .... 을} 목록의 머리에 대한 포인터를 -Passing 아닌 헤드 자체를 : 당신이 통과 노드 ** 머리 대신 노드의 * 머리 = 뉴스가 정의되지 않은 소식은 어디서나 당신이 좋은이었다 무슨 짓을 - 세미콜론 * 머리. –

+0

http : // codepad를 컴파일 한 후이 링크를 한번 확인해보십시오.org/NyUITHU3 – saimadan

관련 문제