2 yxts122 YXTS122 于 2016.01.21 18:04 提问

这输出结果不对,怎么办?
 #include <stdio.h>
#include <stdlib.h>
typedef struct node
{
    int data;
    struct node *next;
}Node;

Node *createLink()
{
    Node *head=(struct node*)malloc(sizeof(struct node));
    Node *temp=head;
    int i=0;
    int a[10] = {1,2,3,5,7,9,10,14,15,20};
    while (i<10)
    {
        Node *n=(struct node*)malloc(sizeof(struct node));
        n->data = a[i];
        n->next = NULL;
        if(i==0)
        {
            head=temp=n;
        }
        else
        {
            temp->next = n;
            temp = n;
        }
        i++;
    }
    return head;
}

Node *insert(Node *head,int data)//就是这个函数
{
    Node *p=head,*pr=NULL,*pb=head;
    pr=(Node *)malloc(sizeof(struct node));
    if(pr==NULL)
    {
        printf("NO enough memory!\n");
        return head;
    }
    pr->data=data;
    pr->next=NULL;
    while(p->data<data&&p->next!=NULL)
    {
        pb=p;
        p=p->next;
    }
    if(p->data>=data)
    {
        if(p==head)
        {
            pr->next=head;
            head=pr;
        }
        else
        {
            p=pb;
            pr->next=p->next;
            p->next=pr;
        }

    }
    else
    {
        p->next=pr;
    }
    return head;
}


void Print(Node *head)
{
    head=head->next;
    while (head!=NULL)
    {
        printf("%d ", head->data);
        head=head->next;
    }
}

int main()
{
    Node *h1=NULL;
    h1=createLink();
    int d;
    scanf_s("%d", &d);
    h1=insert(h1,d);
    Print(h1);
    system("pause");
    return 0;
}

图片说明

4个回答

91program
91program   Ds   Rxr 2016.01.21 18:12
已采纳

第一个问题:

void Print(Node *head)
{
    head=head->next;     // 会导致第一个元素不会输出
    while (head!=NULL)
    {
        printf("%d ", head->data);
        head=head->next;
    }
} 
caozhy
caozhy   Ds   Rxr 2016.01.21 18:13

是你的print函数有问题,没有输出头节点。

caozhy
caozhy   Ds   Rxr 2016.01.21 18:17
 void Print(Node *head)
{
    while (head->next != NULL)
    {
        head = head->next;
        printf("%d ", head->data);

    }
}
caozhy
caozhy   Ds   Rxr 2016.01.21 18:18

图片说明

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!