栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

(C语言)数据结构代码实现笔记1:单链表的构造、取值、查找、插入、删除

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

(C语言)数据结构代码实现笔记1:单链表的构造、取值、查找、插入、删除

#include
#include
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
typedef int ET;

#define MAXSIZE 100

单链表的存储结构
typedef struct Lnode
{
    ET data;           //结点的数据域
    struct Lnode *next;//结点的指针域 
}Lnode, *linklist;     //linklist为指向结构体Lnode的指针类型

///初始化单链表
Status Initlist(linklist *L)//L是个二级指针
{
    (*L) = (linklist)malloc(sizeof(Lnode));//动态分配新的单链表空间
    (*L)->next = NULL;//初始化指针域为空
    return OK;
}

///头插法创建单链表
void Createlist(linklist L, int n)
{
    for(int i=0;idata = data;
        p->next = L->next;
        L->next = p;
    }
}

单链表取值
Status Getelem(linklist L, int i, ET* e)
{
    linklist p = L; int j = 1;
    for(;j<=i;j++)
    {
        if( p == NULL ) return ERROR;
        p = p->next;
    }
    if(j>i+1) return ERROR;
    *e = p->data; 
    return OK;
}

///单链表查找
linklist Searchelem(linklist L,ET e)
{
    linklist p = L->next;
    while(p)
    {
        if( p->data == e ) return p;
        p = p->next;
    }
    return NULL;
}

//单链表的插入
Status Insert(linklist L, int n, ET e)
{
    linklist p = L->next;
    int j=1;
    n--;
    while(p&&jnext;
        j++;
    }
    if(!p||j>n) return ERROR;
    linklist r=(linklist)malloc(sizeof(Lnode));
    r->next = p->next;
    p->next = r;
    r->data = e;
    return OK;
}

//单链表的删除
Status delete(linklist L, int n)
{
    linklist p = L->next;
    int j=1;
    n--;
    while(p&&jnext;
        ++j;
    }
    if(!p||j>n) return ERROR;
    p->next = p->next->next;
    return OK;

}

查看单链表
void browselist(linklist L)
{
    linklist p = L->next;
    printf("the list is:");
    while(p){
        printf("%d ",p->data);
        p = p->next;
    };
}

int main(void)
{
    printf("please input the total number of the elems:");
    int n;
    scanf("%d",&n);
    printf("please input each number of the elems:");
    linklist L,p;
    Initlist(&L);
    
    Createlist(L,n);
    browselist(L);

    //测试取值功能
    int k;
    ET q;
    printf("nplease input the number of the elem:");

    scanf("%d",&k);
    Getelem(L,k,&q);
    printf("%d",q);
    
    //测试查找功能
    ET r;
    printf("nplease input the elem u want to find:");
    scanf("%d",&r);
    printf("%p",Searchelem(L,r));
    
    //测试插入功能
    ET w;
    int a;
    printf("nplease input the elem u want to insert and to where");
    scanf("%d %d",&w,&a);
    Insert(L,a,w);
    browselist(L);
    
    //测试删除功能
    int b;
    printf("nplease input the number of the elem u want to delete:");
    scanf("%d",&b);
    delete(L,b);
    browselist(L);

    system("pause");
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/873417.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号