C语言实现链表

一:实验目的

(1)掌握线性表的顺序存储结构
(2)熟练使用链式存储结构和实现线性表的操作
(3)能熟练掌握链式存储结构中算法的实现

二:实验内容

(1)	建立链式结构的线性表
(2)	实现链式表的插入、删除、查找、输出等基本操作

三:实验原理

线性表

四:程序清单、调试和测试结果及分析

#include<stdio.h>
#include<stdlib.h>
typedef int datatype;
typedef struct node{
    datatype data;
    struct node *next;
}Linked;
Linked Create_Linked(){            //创造节点并进行初始化
    int inte=0;
    Linked *head,*s,*r;
    head=(Linked *)malloc(sizeof(Linked));
    r=head;
    while(inte!=666)
    {
        s=(Linked *)malloc(sizeof(Linked));
        s->data=inte;
        r->next=s;
        r=s;
        scanf("%d",&inte);
    }
    r->next=NULL;
    return *head;
}
int insert_Linked(Linked *link,int i,datatype data){ //在链表的第i个位置处插入data数据
    Linked *link1=(Linked *)malloc(sizeof(Linked));
    link1->data=data;
    Linked *link_t;
    link_t=link;
    int t=1;
    while(link_t!=NULL&&t<i){
        link_t=link_t->next;
        ++t;
    }
    if(!link_t)
    {
        printf("插入位置错误;");
        return 0;
    }
    link1->next=link_t->next;
    link_t->next=link1;
    return 1;
}
int delete_linked(Linked *link,int i,datatype *temprary) //删除第i个位置的元素,并将它存储在temprary中
{
    Linked *link2,*link_t;
    link2=link;
    int t=1;
    while(link2!=NULL&&t<i){
        link2=link2->next;
        ++t;
    }
    if(!link2){
        printf("删除错误");
        return 0;
    }
    link_t=link->next;
    *temprary=link_t->data;
    free(link_t);
    link->next=link->next->next;
    return 1;
}
int Search_Linked(Linked *link,datatype data){ //查找元素
    Linked *link3;
    link3=link;
    while(link3!=NULL){
        if(data==link->data){
            printf("查找成功!");
            return 1;
        }
        link3=link3->next;
    }
    return 0;
}
void Print_Linked(Linked *link)
{
    Linked *link3;
    link3=link;
    //printf("链表中的数据为:");
    while(link3!=NULL){
        link3=link3->next;
        if(link3!=NULL)
            printf("%d\t",link3->data);

    }
}
int main()
{
    int a;
    printf("初始化表,输入666时停止加入节点:\n");

    Linked link=Create_Linked();

    printf("在第五个位置插入数据7");
    insert_Linked(&link,5,7);
    printf("删除位置为4的元素\n");
    delete_linked(&link,4,&a);
    printf("查找数据为3的元素\n");
    Search_Linked(&link,3);
    printf("打印链表中的元素:\n");
    Print_Linked(&link);
}

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值