欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

数据结构:链表的表头和表尾插入

最编程 2024-06-11 12:27:54
...

没啥好多说的,直接看代码。(C)

数据结构头插:

在头节点的后面进行插入操作,后一个插入进来的值,在前一个插入进来的值与头节点之间。

代码如下:

代码语言:javascript
复制
#include "stdafx.h"
#include "malloc.h"
#include "stdio.h"
typedef  struct  Lnode
{
    int  data;
    struct Lnode  *next;
}Lnode,*LinkList;
void  Create_LinkTable(LinkList  &L)
{
    L = (LinkList)malloc(sizeof(Lnode));
    L->data = 0;
    L->next = NULL;
    printf("数字:");
    int  data;
    scanf("%d",&data);
    while (1)
    {
        if (data == 32767)  break;
        else
        {
            LinkList  p = (LinkList)malloc(sizeof(Lnode));
            p->data = data;
            p->next = L->next;
            L->next = p;//头插法
            scanf("%d",&data);
        }
    }
}
void  Travel(LinkList  L)
{
    LinkList p = L;
    while (p != NULL)
    {
        printf("%d", p->data);
        p = p->next;
    }
}
int main()
{
    LinkList  L;
    Create_LinkTable(L);
    Travel(L);
    return 0;
}

从结果可以看出,输入的数字1234,遍历时变成了4321。

尾插法:

设法找到插入结点的上一个结点,总而言之,尾插法就是要使后面插入的结点在前一个插入结点和NULL值之间。

代码如下:

代码语言:javascript
复制
#include "stdafx.h"
#include "malloc.h"
#include "stdio.h"
typedef  struct  Lnode
{
    int  data;
    struct Lnode  *next;
}Lnode,*LinkList;
void  Create_LinkTable(LinkList  &L)
{
    L = (LinkList)malloc(sizeof(Lnode));
    L->data = 0;
    L->next = NULL;
    printf("数字:");
    int  data;
    scanf("%d",&data);
    LinkList  fp = L;
    while (1)
    {
        if (data == 32767)  break;
        else
        {
            LinkList  p = (LinkList)malloc(sizeof(Lnode));
            p->data = data;
            fp->next = p;
            p->next = NULL;
            fp = p;//尾插法
            scanf("%d",&data);
        }
    }
}
void  Travel(LinkList  L)
{
    LinkList p = L;
    while (p != NULL)
    {
        printf("%d", p->data);
        p = p->next;
    }
}
int main()
{
    LinkList  L;
    Create_LinkTable(L);
    Travel(L);
    return 0;
}

从结果可以看出,输入为1234时,遍历的仍然是1234。

全文结束,欢迎在评论区讨论~

推荐阅读