C语言数据结构之简单实现链表的建立及打印

本文介绍了C语言中如何简单实现链表的建立和打印。通过结点的结构体定义,使用尾插法建立单链表,并提供了单链表的遍历打印算法。

C语言数据结构之简单实现链表的建立及打印

链表是数据结构中非常重要的一种存储结构,相较非线性结构树、图而言,链表有着更为广泛的应用。C语言实现链表的建立与打印如下:

1、结点的结构体定义

链表的每一个结点都包括数据域和指针域两个部分,其定义如下:

typedef struct Node{
    int data;//数据域
    struct  Node *next;//指针域
}SNode,*Linkist;

2、建立单链表

利用尾插法建立链表是最常用的方法,需要用到两个结构体指针p和r,其算法设计如下:

Linkist CreateNode(){
    int num;
    int i=1;
    Linkist L;//头指针
    Linkist p,r;
    L=(SNode *)malloc(sizeof(SNode));
    L->next=NULL;//初始化
    p=L;
    printf("please input %d number:(数字0结束输入)\n",i);
    scanf("%d",&num);
    while(num!=0){
        i=i+1;
        r=(SNode *)malloc(sizeof(SNode));
        r->data=num;
        r->next=NULL;
        p->next=r;
        p=r;
        printf("please input %d number:\n",i);
        scanf("%d",&num);
    }
    return L;
}

3 、单链表的打印

对链表进行遍历输出,其算法设计如下:

void PrintList(Linkist L){
    Linkist P;
    P=L->next;
    printf("\n建立的单链表为:\n");
    while(P!=NULL){
            printf("%d\n",P->data);
            P=P->next;
    }
}

4、源代码

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

typedef struct Node{
    int data;
    struct  Node *next;
}SNode,*Linkist;

Linkist CreateNode(){
    int num;
    int i=1;
    Linkist L;
    Linkist p,r;
    L=(SNode *)malloc(sizeof(SNode));
    L->next=NULL;//初始化
    p=L;
    printf("please input %d number:(数字0结束输入)\n",i);
    scanf("%d",&num);
    while(num!=0){
        i=i+1;
        r=(SNode *)malloc(sizeof(SNode));
        r->data=num;
        r->next=NULL;
        p->next=r;
        p=r;
        printf("please input %d number:\n",i);
        scanf("%d",&num);
    }
    return L;
}

void PrintList(Linkist L){
    Linkist P;
    P=L->next;
    printf("\n建立的单链表为:\n");
    while(P!=NULL){
            printf("%d\n",P->data);
            P=P->next;
    }
}

int main()
{
    Linkist T;
    T=CreateNode();
    PrintList(T);
    return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值