数据结构 链表的创建,求链表的长度,插入元素等操作代码展示

 今上午老师布置的作业,很不情愿的写了个单链表。。。发现长时间不写确实很难一步写对,调试了20分钟,可算是写完了,

感觉应该是对了,测了几组数据没啥问题.....

代码如下:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <malloc.h>
using namespace std;
//链表数据类型
struct List{
    int data;
    List * next;
};
//链表初始化
List* init()
{
    return NULL;
}
//链表的创建
List* Create (List* L)
{
    if(L)
    {
        printf("链表未初始化\n");
        return NULL;
    }
    L=(List*)malloc(sizeof(List));
    L->next=NULL;
    printf("请输入链表长度: ");
    int len;
    List* p=L;
    scanf("%d",&len);
    printf("请按递增的顺序输入元素\n");
    for (int i=0;i<len;i++)
    {
        int data;
        scanf("%d",&data);
        List* New=(List*)malloc(sizeof(List));
        New->data=data;
        New->next=NULL;
        p->next=New;
        p=New;
    }
    return L;
}
//求链表的长度
void List_Len (List* L)
{
    if(L==NULL)
    {
        printf("链表未创建\n");
        return;
    }
    int len=0;
    List* p=L->next;
    while (p)
    {
        p=p->next;
        len++;
    }
    printf("链表的长度为%d\n",len);
}
//遍历单链表
void Traverse (List* L)
{
    if(L==NULL)
    {
        printf("链表未创建\n");
        return;
    }
    List* p=L->next;
    printf("链表元素如下:\n");
    while (p)
    {
        printf("%d%c",p->data,p->next==NULL?'\n':' ');
        p=p->next;
    }
}
//插入元素
bool Insert (List* L)
{
    if(L==NULL)
    {
        printf("链表还未创建\n");
        return false;
    }
    printf("请输入想要插入的元素: ");
    int Data;
    scanf("%d",&Data);
    List* p=L;
    while (p->next&&p->next->data<Data)
    {
        p=p->next;
    }
    List* New=(List*)malloc(sizeof(List));
    New->data=Data;
    New->next=p->next;
    p->next=New;
    return true;
}
int main()
{
    List* Head;
    Head=init();
    Head=Create(Head);
    Traverse(Head);
    List_Len(Head);
    if(Insert(Head))
        printf("插入成功\n");
    else
        printf("插入失败\n");
    Traverse(Head);
    List_Len(Head);
    return 0;
}
/*
运行结果如下:
请输入链表长度: 3
请按递增的顺序输入元素
1 2 3
链表元素如下:
1 2 3
链表的长度为3
请输入想要插入的元素: 4
插入成功
链表元素如下:
1 2 3 4
链表的长度为4*/

猜你喜欢

转载自blog.csdn.net/qq_41410799/article/details/83001213
今日推荐