VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 339|回复: 2

[求助] c语言链表,,插入不进去 谁帮忙改改

[复制链接]
79_avatar_middle
在线会员 发表于 2019-1-5 12:02:39 | 显示全部楼层 |阅读模式
3驿站币
#include <stdio.h>
typedef struct Link {
        int data;
        struct Link * next;
}node;

node * initLink()
{
        node * head, *p1, *p2;        //head头指针 p1开辟节点 p2连接
        p1 = (node *)malloc(sizeof(node *));
        //初始化
        scanf_s("%d", &p1->data);
        p1->next = NULL;
       
        //三个指向一个节点
        head = p2 = p1;
        while (p1->data != 0)
        {
                p1 = (node *)malloc(sizeof(node *));
                scanf_s("%d", &p1->data);
                p2->next = p1;
                p2 = p1;
        }
        p2->next = NULL;
        return head;
}
void display(node * head)
{
        node * temp=head;
        while (temp->next)
        {
                printf("%d", temp->data);
                temp = temp->next;
        }
}
node * insertintail(node * head)
{
        node * temp = head;
        while (temp->next != NULL)
                temp = temp->next;

        node * newNode = (node *)malloc(sizeof(node *));
        scanf_s("%d", &newNode->data);

        newNode->next = NULL;
        temp->next = newNode;
        return temp;
}
node * insert(node * head)
{
        node * temp = head;
        for (int i = 1; i < 3; i++)
                temp = temp->next;
        node * newNode=(node *)malloc(sizeof(node *));
        scanf_s("%d", &newNode->data);

        newNode->next = temp->next;
        temp->next = newNode;
        return temp;
}
int main()
{
        node * p = initLink();
        printf("插入前\n");
        display(p);
        printf("\n输入插入位置3的数\n");
        p = insert(p);
        printf("插入后\n");
        display(p);
        printf("\n输入末尾的数\n");
        p = insertintail(p);
        printf("插入后\n");
        display(p);
        system("pause");

}





上一篇:VC6.0编译 C2632错误 long followed by long is illegal
下一篇:做一下题 很简单
51_avatar_middle
online_admins 发表于 2019-1-5 12:45:54 | 显示全部楼层
楼主调用 malloc 申请内存的时候有错误,把代码中的:
malloc(sizeof(node *));
都改成:
malloc(sizeof(node));
试试好不好用?
08_avatar_middle
在线会员 发表于 2019-1-8 09:03:19 | 显示全部楼层

  1. #include <stdio.h>
  2. typedef struct Link {
  3.         int data;
  4.         struct Link * next;
  5. }node;

  6. node * initLink()
  7. {
  8.         node * head, *p1, *p2;        //head头指针 p1开辟节点 p2连接
  9.         p1 = (node *)malloc(sizeof(node *));
  10.         //初始化
  11.         scanf_s("%d", &p1->data);
  12.         p1->next = NULL;
  13.         
  14.         //三个指向一个节点
  15.         head = p2 = p1;
  16.         while (p1->data != 0)
  17.         {
  18.                 p1 = (node *)malloc(sizeof(node *));
  19.                 scanf_s("%d", &p1->data);
  20.                 p2->next = p1;
  21.                 p2 = p1;
  22.         }
  23.         p2->next = NULL;
  24.         return head;
  25. }
  26. void display(node * head)
  27. {
  28.         node * temp=head;
  29.         while (temp->next)
  30.         {
  31.                 printf("%d", temp->data);
  32.                 temp = temp->next;
  33.         }
  34. }
  35. node * insertintail(node * head)
  36. {
  37.         node * temp = head;
  38.         while (temp->next != NULL)
  39.                 temp = temp->next;

  40.         node * newNode = (node *)malloc(sizeof(node *));
  41.         scanf_s("%d", &newNode->data);

  42.         newNode->next = NULL;
  43.         temp->next = newNode;
  44.         return temp;
  45. }
  46. node * insert(node * head)
  47. {
  48.         node * temp = head;
  49.         for (int i = 1; i < 3; i++)
  50.                 temp = temp->next;
  51.         node * newNode=(node *)malloc(sizeof(node *));
  52.         scanf_s("%d", &newNode->data);

  53.         newNode->next = temp->next;
  54.         temp->next = newNode;
  55.         return temp;
  56. }
  57. int main()
  58. {
  59.         node * p = initLink();
  60.         printf("插入前\n");
  61.         display(p);
  62.         printf("\n输入插入位置3的数\n");
  63.         p = insert(p);
  64.         printf("插入后\n");
  65.         display(p);
  66.         printf("\n输入末尾的数\n");
  67.         p = insertintail(p);
  68.         printf("插入后\n");
  69.         display(p);
  70.         system("pause");

  71. }
复制代码

插入代码文字。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-6-20 08:13

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表