首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在C++中实现单链表

如何在C++中实现单链表
EN

Stack Overflow用户
提问于 2019-04-12 08:38:35
回答 1查看 373关注 0票数 -1

我正在尝试用C语言填充我的链表,但是id并没有按照我想要的方式来写。我想保留一个指针"p“,并使用相同的指针继续添加到列表中。然而,当我尝试打印时,它只打印头部的数据!

代码语言:javascript
复制
#include<stdio.h>
#include <stdlib.h>

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

int main(){
   node *head = NULL;
   head =  malloc(sizeof(node));
   if(head==NULL){
     printf("ta foirer quelque chose frero!");
     return 1;
   }
   (*head).data=3;
   (*head).next=NULL;

   node *p = NULL;

  p = (node*) head->next;
  p =  malloc(sizeof(node));
  p->data = 5;

  p->next = NULL;
  p= (node *)p->next;

  int i=0;
  while(i<5){
    p =  malloc(sizeof(node));
    i++;
    p->data = i;
    p->next=NULL;
    p= (node *)p->next;
  }


  p = head;

  while(p){
    printf("\n%d",p->data);
    p =(node*) p->next;
  }

  return 0;
}

我得到的是输出

代码语言:javascript
复制
3

我希望能得到

代码语言:javascript
复制
3
5
0
1
2
3
4
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-12 09:02:25

代码语言:javascript
复制
#include<stdio.h>
#include <stdlib.h>

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

typedef struct Node node;

void insert(node* h, int v) {
    node* tmp = h;

    while(tmp->next)
        tmp = tmp->next;
    node* newnode = malloc(sizeof(node));
    newnode->data = v;
    newnode->next = NULL;
    tmp->next = newnode;
}

int main(){
   node *head = NULL;
   head =  malloc(sizeof(node));
   if(head==NULL){
     printf("ta foirer quelque chose frero!");
     return 1;
   }
   head->data=3;
   head->next = NULL;


   node *p = NULL;

  insert(head, 5);
  int i=0;
  while(i<5){
    insert(head, i++);
  }


  p = head;

  while(p){
    printf("%d\n",p->data);
    p = p->next;
  }

  return 0;
}

如果你注意到了,我稍微改变了你的代码的布局,使它更简洁。您需要做的是遍历节点,该节点出现在place之前,以添加新节点,在本例中是end。通常,这是包含头部的不同结构中的单独指针,这称为链表的尾部。您根本没有跟踪,而不是让真正添加节点。上面的insert函数可以做到这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55642943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档