• 单向链表增删查


    #include"stdio.h"
    #include"stdlib.h"
    typedef struct node{
    int e;
    struct node *next;
    }*NNode;
    //初始化
    NNode InitList(NNode L){
    NNode head=NULL;
    head=(NNode)malloc(sizeof(node));
    if(!head){
    return 0;
    }
    head->next=NULL;
    L=head;
    return L;
    }
    //重置
    void ClearList(NNode L){
    NNode p=NULL;
    if(L->next){
    p=L->next;
    free(L);
    }
    }

    //判空
    bool ListEmpty(NNode L){
    if(L->next==NULL)
    return true;
    else return false;
    }
    //长度
    int ListLength(NNode L){
    NNode p=NULL;
    int count=0;
    p=L;
    while(p->next){
    count++;
    p=p->next;
    }
    return count;
    }
    //创建n个节点插入头节点之后
    NNode CreatList(NNode L,int n){
    NNode p=NULL;
    for(int i=0;i<n;i++){
    p=(NNode)malloc(sizeof(node));
    scanf("%d",&(p->e));
    p->next=L->next;
    L->next=p;
    }
    return L;
    }
    //GetElem获取
    int GetElem(NNode L,int n){
    NNode p=NULL,q=NULL;
    int j=0;
    q=L;
    if(q->next&&j<n){
    j++;
    q=q->next;
    if(j+1==n)
    return (L->e);
    }else{
    printf("输入错误");
    return 0;
    }

    }
    //获取指定元素的位置
    int LocateElem(NNode L,int e){
    int i=0;
    NNode p=NULL;
    p=L;
    while(p->next&&p->e!=e){
    p=p->next;
    i++;
    }
    if(!p->next){
    printf("查找失败");
    return -1;
    }
    if(p->e==e)
    return i;
    }
    //输出
    void Out(NNode L){
    NNode p;
    p=L->next;
    while(p)
    {
    printf("%d",p->e);
    p=p->next;
    printf(" ");
    }
    }
    //插入
    NNode LisetInsert(NNode L,int e,int n){
    NNode p=NULL,q=NULL;
    int j=1;
    q=L;
    if(q->next&&j<n){
    j++;
    q=q->next;
    }else{
    printf("输入错误");
    return L;
    }
    p= (NNode)malloc(sizeof(node));
    p->e=e;
    p->next=q->next;
    q->next=p;
    return L;
    }
    //删除指定节点
    NNode ListDelete(NNode L,int n){
    NNode p=NULL,q=NULL;
    int j=0;
    q=L;
    if(q->next&&j<n-1){
    j++;
    q=q->next;
    }else{
    printf("输入错误");
    return L;
    }

    p=q->next;
    q->next=p->next;
    free(p);
    return L;
    }
    void main(){
    int n,m,i,e;
    NNode L=NULL;
    //printf("是否为空:");
    //printf("%d",ListEmpty(L));//

    L=InitList(L);//
    printf("初始化成功");
    //printf("是否为空:");
    //printf("%d",ListEmpty(L));//
    CreatList(L,5);//
    printf("长度为:");
    printf("%d ",ListLength(L));
    printf("输出为");
    Out(L);
    printf("是否为空:");
    printf("%d",ListEmpty(L));//
    ListDelete(L,2);//
    Out(L);
    printf("长度为:");
    printf("%d",ListLength(L));
    printf("插入后");
    LisetInsert(L,4,2);
    Out(L);
    printf("定位");
    m=LocateElem(L,4);
    printf("%d",m);
    }

    //区分typedef struct和struct的区别

    https://www.cnblogs.com/love-zf/p/5054015.html

  • 相关阅读:
    20220428 08:00:02
    20220427 08:00:02
    Belong to you
    今天看到疫情驰援的人发布的视频,感触很多
    用生活治愈生活
    站 又名《standard》
    在mysql中,如果传入的startTime为20201112,20201113这样的字符串,则可以使用find_in_set取代in
    界面控件DevExpress WinForms MVVM入门指南——登录表单(下)
    界面控件DevExpress WPF v21.2 可访问性功能升级
    UI组件Kendo UI for jQuery数据管理教程 TaskBoard/搜索工具辑
  • 原文地址:https://www.cnblogs.com/tao7/p/9343207.html
Copyright © 2020-2023  润新知