我是靠谱客的博主 痴情香菇,最近开发中收集的这篇文章主要介绍头插法尾插法输出单链表,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

头插法输入单链表(带有头结点)

//1.链表的创建 (带头结点的头插法)
LinkList List_HeadInsert(LinkList &L)
{
    LNode *s;
    int x;
    L = (LinkList)malloc(sizeof(LNode));
    L->next = NULL;
    scanf("%d", &x);
    while (x != 9999)
    {
        s = (LNode *)malloc(sizeof(LNode));
        s->data = x;
        s->next = L->next;
        L->next = s;
        scanf("%d", &x);
    }
    return L;
}

头插法输入单链表(不带头结点)

//1.链表的创建 (不带头结点的头插法)
//在头部插入新结点,每次插入新结点之后,需要将它的地址赋给头结点
LinkList List_HeadInsert(LinkList &L)
{
    int x;
    LNode *s;
    L = (LinkList)malloc(sizeof(LNode));
    scanf("%d", &x);
    L->data = x;
    L->next = NULL;
    while (x != 9999)
    {
        scanf("%d", &x);
        //执行插入数
        s = (LNode *)malloc(sizeof(LNode));
        s->data = x;
        s->next = L;
        L = s;
    }
    return L;
}

尾插法输入单链表

//2.链表的创建 (尾插法)
LinkList List_TailInsert(LinkList &L)
{
    int x;
    L = (LinkList)malloc(sizeof(LNode));
    LNode *s, *r = L;
    scanf("%d", &x);
    while (x != 9999)
    {
        s = (LNode *)malloc(sizeof(LNode));
        s->data = x;
        r->next = s;
        r = s;
        scanf("%d", &x);
    }
    r->next = NULL;
    return L;
}

输出单链表

void PrintList(LinkList L)
{
    LinkList p;
    p = L->next;
    printf("链表元素如下:n");
    while (p != NULL)
    {
        printf("%d ", p->data);
        p = p->next;
    }
    printf("n");
}

整体代码

#include <bits/stdc++.h>
using namespace std;

#define ElemType int
typedef struct LNode
{
    ElemType data;
    struct LNode *next;
} LNode, *LinkList;

// //1.链表的创建 (带头结点的头插法)
// LinkList List_HeadInsert(LinkList &L)
// {
//     LNode *s;
//     int x;
//     L = (LinkList)malloc(sizeof(LNode));
//     L->next = NULL;
//     scanf("%d", &x);
//     while (x != 9999)
//     {
//         s = (LNode *)malloc(sizeof(LNode));
//         s->data = x;
//         s->next = L->next;
//         L->next = s;
//         scanf("%d", &x);
//     }
//     return L;
// }

//1.链表的创建 (不带头结点的头插法)
//在头部插入新结点,每次插入新结点之后,需要将它的地址赋给头结点
LinkList List_HeadInsert(LinkList &L)
{
    int x;
    LNode *s;
    L = (LinkList)malloc(sizeof(LNode));
    scanf("%d", &x);
    L->data = x;
    L->next = NULL;
    while (x != 9999)
    {
        scanf("%d", &x);
        //执行插入数
        s = (LNode *)malloc(sizeof(LNode));
        s->data = x;
        s->next = L;
        L = s;
    }
    return L;
}

//2.链表的创建 (尾插法)
LinkList List_TailInsert(LinkList &L)
{
    int x;
    L = (LinkList)malloc(sizeof(LNode));
    LNode *s, *r = L;
    scanf("%d", &x);
    while (x != 9999)
    {
        s = (LNode *)malloc(sizeof(LNode));
        s->data = x;
        r->next = s;
        r = s;
        scanf("%d", &x);
    }
    r->next = NULL;
    return L;
}

void PrintList(LinkList L)
{
    LinkList p;
    p = L->next;
    printf("链表元素如下:n");
    while (p != NULL)
    {
        printf("%d ", p->data);
        p = p->next;
    }
    printf("n");
}

int main()
{
    LinkList L; //结构变量L即表示整个链表,也是头指针指向头结点
    printf("头插法建立单链表,输入9999后结束n");
    L = List_HeadInsert(L);
    PrintList(L);
    printf("尾插法建立单链表,输入9999后结束n");
    L = List_TailInsert(L);
    PrintList(L);
    system("pause");
    return 0;
}

调试结果:
在这里插入图片描述

最后

以上就是痴情香菇为你收集整理的头插法尾插法输出单链表的全部内容,希望文章能够帮你解决头插法尾插法输出单链表所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部