如何在C中实现单链表

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (7)

我想在C中填充我的链表,但是id不会说出我想要的内容。我想保持指针“p”并继续使用相同的指针添加到列表中。但是当我尝试打印时,它只打印头部的数据!

#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;
}

我得到了输出

3

期望输出

3
5
0
1
2
3
4
提问于
用户回答回答于
#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;
}

如果您注意到,我稍微更改了代码的布局,并使其更清晰。你需要的是遍历查找节点出现的前地方加入新的节点,在这种情况下结束。通常,这是包含头部的不同结构中的单独指针,这称为链表的尾部。你根本就没有跟踪的地方,真正添加节点。上面的插入函数就是这样做的。

热门问答

请问一下 php怎么上传图片到腾讯云cos并返回图片路径 啊 ?

你可以直接调用COS的接口进行上传。 PUT Object接口进行上传。接口文档:https://cloud.tencent.com/document/product/436/7749 路径就是你上传的图片文件名和你的域名拼接。 比如: PUT /picture.jpg HTTP...... 展开详请

使用CDN之后出现一些列问题?

更新源站内容需要马上生效的话,需要做刷新操作 https://console.cloud.tencent.com/cdn/refresh 设置为A记录后,请求直接到源站,可能因为刚刚设置了A记录,解析还是有缓存,导致仍然解析到CDN了,可以ping测下域名,看解析到的ip是源站还...... 展开详请

如何提高调用API网关、scf的请求内容长度限制?

Tina

腾讯云 · 产品经理 (已认证)

Go Serverless!
推荐
您好,当前SCF确实对于同步请求的事件大小,响应大小有相应的限制,最大为6MB。可以参考文档 https://cloud.tencent.com/document/product/583/11637 更多解决方案,欢迎您进入SCF用户q群一起讨论! 群号:537539545 sc...... 展开详请

cmq的实例是否支持调整写入频率?

是否有语音转发功能?

software微软、谷歌、腾讯、阿里、百度……
推荐已采纳
您好,核实下您咨询的是哪个端的问题,目前是没有语音转发功能的。这里提供下android端消息转发的示例参考: https://cloud.tencent.com/document/product/269/9232 image.png ... 展开详请

信令包里面的公网地址为什么都被改成内网地址了?

您描述的原因是云服务器内网ip地址与公网ip地址是一对一映射,故云服务器内显示的是内网ip地址。 如您需要网卡设置公网ip地址,建议您参考下方文档eip直通(已为您开通白名单) EIP 直通:https://cloud.tencent.com/document/product/2...... 展开详请

所属标签

扫码关注云+社区

领取腾讯云代金券