單向連結串列的建立

YIZIMU發表於2018-09-16

#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>

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

//建立連結串列,count為建立的連結串列的節點數目
Node  *create(int count)
{
    int i;
    Node *midnode= NULL;//中間移位結點,非常重要
    Node *newnode = NULL;
    Node *head = NULL;

    printf("Input the integers :\n");
    for(i = count;i > 0;i--)
    {
        newnode = (Node*)malloc(sizeof(struct node));//分配節點空間
        scanf("%d",&newnode->data);

        if(head == NULL)    //第一次將新結點繫結到head後面
        {
            head = newnode;//head結點繫結
            midnode = newnode;//中間結點位置向後移位
        }
        else
        {
            midnode->next = newnode;//非第一次進來,運用到了移位結點,繫結到移位結點
            midnode = newnode;//移動移位結點
        }
    }
    midnode->next = NULL;//中間移位結點 的 後面置空
    return head;
}
  //  入口函式
int main()
{
    int count;//連結串列節點數
    Node *node;
    printf("Input the count of nodes you want to create:");
    scanf("%d",&count);

    node = create(count);
    printf("The result is :\n");
    while(node)
    {
        printf("%d ",node->data);
        node = node->next;
    }
    //system("pause");
    printf("\n");
    return 0;
}

 

 

 

相關文章