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

C语言 数据结构之单链表(基本操作)

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

C语言 数据结构之单链表(基本操作)

本文只涉及单链表的基本操作,由于本人是初学者所以相关排序和查找等算法后期更新。

本文涉及单链表的以下内容:

  1. 单链表的初始化
  2. 单链表的合法判定
  3. 单链表成员的打印
  4. 单链表成员的赋值(头插法)(尾插法)
  5. 顺序表成员的清空
  6. *顺序表成员的插入
  7. *顺序表成员的删除
#include
#include
typedef int ElemType;
typedef struct linklist{
      ElemType data;
     struct linklist *next;
}*linkList,Lnode;
//单链表初始化
bool initList(linkList &L){
    L= new Lnode;
    L=L->next=NULL;
    return true;
}
//打印单链表
void printList(linkList &L){
    linkList p = L->next;
    if(p==NULL){
        printf("链表已空!n");
    }
    else{
    printf("当前单链表成员为:n");
    while(p!=NULL){
    printf("%dt",p->data);
    p=p->next;
    }
    }
    printf("n");
}
//单链表的创建(头插法)
void H_createList(linkList &L){
    linkList p;
    L=new Lnode;
    L->next=NULL;
    int e;
    int l = 1;
    for(int i=0;idata);
     p->next=L->next;
     L->next=p;
     printf("是否继续创建?是(1),否(0) :");
     scanf("%d",&e);
     if(e==0){printf("创建完毕!!n");break;}
     else 
     l++;
    }
   printList(L);
}
//单链表的创建(尾插法)
void T_createList(linkList &L){
    linkList p,r;
    L=new Lnode;
    L->next=NULL;
    r=L;
    int l =1,e;
    for(int i =0;idata);
    p->next = NULL;
    r->next = p;
    r=p;
    printf("是否继续创建?是(1),否(0) :");
     scanf("%d",&e);
     if(e==0){printf("创建完毕!!n");break;}
     else 
     l++;
    }
    printList(L);
}
//单链表的创建
void createList(linkList &L){
    int i;
    printf("头插法请输入1t尾插法请输入2n请输入插入方法:");
    scanf("%d",&i);
    switch(i){
        case 1: H_createList(L);break;
        case 2: T_createList(L);break;
        default:printf("输入数字不在范围内!n");
    }
}
//单链表成员的插入
void insertList(linkList &L){
    int l,i=0;
    linkList n = new Lnode;
    linkList p=L;
    printf("请输入所插入的位置(位置>=1):");
    scanf("%d",&l);
    while(p&&inext;
       ++i;
    }
    n->next=p->next;
    p->next=n;
    printf("请输入插入的数字:");
    scanf("%d",&n->data);
    printList(L);
}
//单链表成员的删除
void deletList(linkList &L){
        int i=0,l;
        linkList p=L;
        linkList q;
        printf("请输入所删除的位置(位置>=1):");
        scanf("%d",&l);
        while(p->next&&inext;
            ++i;
        }
        q=p->next;
        p->next=q->next;
        delete q;
        printf("删除完成!!n");
        printList(L);
}
//单链表的清空
void clearList(linkList &L){
       linkList p,q;
       p=L->next;
       while(p){
           q=p->next;
           delete p;
           p=q;
       }
       L->next=NULL;
       printList(L);
}
//单链表的销毁
void destroyList(linkList &L){
      linkList p;
      while(L){
          p=L;
          L=L->next;
          delete p;
      }
      printf("单链表已销毁!!n");
}
//操作菜单
void opreatmune(){
    printf("n**********操作代码**********n");
    printf("单链表成员的创建————1t单链表的成员的插入————2t单链表成员的删除————3t打印单链表成员————4t单链表所有成员的删除————5t单链表的销毁————6t退出程序————10n");
    printf("***************************n");
    printf("n");
}
int main(){
    int choice;
    linkList L;
    bool a;
    a=initList(L);
    if(a==true)
    while(1){
        opreatmune();
        printf("请输入操作代码:");
        scanf("%d",&choice);
        if(choice==10) break;
        else{
        switch(choice){
            case 1:createList(L);break;
            case 2:insertList(L);break;
            case 3:deletList(L);break;
            case 4:printList(L);break;
            case 5:clearList(L);break;
            case 6:destroyList(L);break;
            default:printf("操作代码不在范围内!!n");
        }
        }
    }
    return 0;
}

由于作者知识有限,若有不足恳请指正。

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

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

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