主函数:

链表.cpp

#include <bits/stdc++.h>
#include "List.cpp"
using namespace std;
int main()
{SlinkNode *list;InList(list); //先进行初始化,再执行菜单里面内容int select;   //定义菜单筛选值while (1){menu();cout << "请输入菜单号:";cin >> select;switch (select){case 1:Creat(list);PrintNode(list);GetLength(list);break;case 2:isNull(list);Insert(list);PrintNode(list);GetLength(list);break;case 3:isNull(list);Delete(list);PrintNode(list);GetLength(list);break;case 4:isNull(list);Find(list);case 0:Destroy(list);exit(0);default:cout << "请输入有效值";}}return 0;
}

函数部分:

List.cpp

#include <bits/stdc++.h>
using namespace std;typedef int ElemType;
typedef struct node
{ElemType data;struct node *next;
} SlinkNode;
//菜单栏
void menu()
{cout << "\n******** 1.创建表";cout << "******** 2.插入数据";cout << "******** 3.删除数据";cout << "******** 4.查找数据";cout << "******** 0.退出";cout << "\n";
}//打印链表
void PrintNode(SlinkNode *&L)
{SlinkNode *p;p = L->next;cout << "目前链表为:" << endl;while (p){cout << p->data << " ";p = p->next;}cout << "\n";
}//  初始化void InList(SlinkNode *&L)
{L = (SlinkNode *)malloc(sizeof(SlinkNode));L->next = NULL;
}//创建
void Creat(SlinkNode *&L)
{SlinkNode *p, *tc; //新创建一个节点L = (SlinkNode *)malloc(sizeof(SlinkNode));int i = 1, j, n, x;tc = L;cout << "输入您要创建元素的个数:" << endl;cin >> n;cout << "请您输入元素:" << endl;for (i = 0; i < n; i++){cin >> x;p = (SlinkNode *)malloc(sizeof(SlinkNode));p->data = x;tc->next = p;tc = p;}tc->next = NULL;
}//销毁线性表
void Destroy(SlinkNode *&L)
{SlinkNode *pre = L, *p = pre->next;while (p != NULL){free(pre);pre = p;p = p->next;}free(pre);
}// 求长度方法
void GetLength(SlinkNode *L)
{int i = 0;SlinkNode *p = L->next;while (p != NULL){i++;p = p->next;}cout << "链表长度为:" << i << endl;
}//插入元素int Insert(SlinkNode *&L)
{int j = 0, x, i;cout << "输入要插入的元素:" << endl;cin >> x;cout << "输入要插入的元素的位置:" << endl;cin >> i;SlinkNode *p = L, *s;if (i <= 0)return 0;while (p != NULL && j < i - 1){j++;p = p->next;}if (p == NULL)return 0;else{s = (SlinkNode *)malloc(sizeof(SlinkNode));s->data = x;s->next = p->next;p->next = s;return 1;}
}
//删除:
void Delete(SlinkNode *&L)
{SlinkNode *p = L, *q;int j = 0, i;cout << "请输入您要删除第几个位置的元素:" << endl;cin >> i;while (p && j < i - 1){j++;p = p->next;}if (p == NULL){cout << "删除失败";}else{q = p->next;if (q == NULL)cout << "删除失败";else{p->next = q->next;free(q);cout << "删除成功";}}
}
//查找元素
void Find(SlinkNode *&L)
{SlinkNode *p = L->next;int j = 1, n;cout << "输入您要查找的元素:" << endl;cin >> n;while (p != NULL && p->data != n){p = p->next;j++;}if (p == NULL){cout << "未找到您要查找的元素";}else{cout << "已经查询到,它在" << j << "序号";}
}//空表判断,解决还未创建表就进行增删改查的问题
void isNull(SlinkNode *&L)
{if (L->next == NULL){cout << "请先创建表,才能执行本操作";exit(0);}
}

效果图:

单链表实现增删改查(进化版)相关推荐

  1. 通用版!完整代码,单链表SingleLinkedList增删改查,反转,逆序,有效数据等Java实现

    文章目录 节点类 链表类(主要) 测试类 小结 节点类 可以根据需要,对节点属性进行修改.注意重写toString()方法,以便后续的输出操作. //节点类 class Node {public in ...

  2. 单链表实现增删改查(含头结点)

    ** 单链表实现增删改查(含头结点) ** **## 单链表** package com.Linked;public class HeadLinked {public String name;// 链 ...

  3. C语言 单链表的增删改查

    单链表的增删改查 目录 单链表的增删改查 链表的创建和输出(有头结点) 链表的查找 链表的删除 链表的修改 链表是一种最常见地采用动态存储分配方式的数据结构,相较于数组而言它更加灵活. 单链表的特点 ...

  4. 带头节点单链表的增删改查

    单链表有很多结构循环单链表,有头节点的单链表,无头节点的单链表,双节点单链表,以下源码是以有一个头节点的单链表为例写的增删改查的各种功能,就是下图 然后各个注释也在函数后面写着,这玩意确实还挺难,源码 ...

  5. java单链表 提供增删改查_java实现单链表增删改查的实例代码详解

    package 数据结构算法.链表; /* *定义节点 * 链表由节点构成 */ public class node { private e e; //数据data private node next ...

  6. C语言单链表实现增删改查

    1.概述 单链表使是一种链式存储结构,链表中的数据以结点的方式表示.每个结点由数据域和指针域两部分构成.数据域存储链表的数据元素,指针域存储连接相邻结点的地址. 2.单链表基本组成 typedef s ...

  7. Django学习笔记(10)——Book单表的增删改查页面

    一,项目题目:Book单表的增删改查页面 该项目主要练习使用Django开发一个Book单表的增删改查页面,通过这个项目巩固自己这段时间学习Django知识. 二,项目需求: 开发一个简单的Book增 ...

  8. 极其方便的使用Mybatis单表的增删改查

    [活动]Python创意编程活动开始啦!!!      CSDN日报20170427 --<如何在没有实际项目经验的情况下找到工作>      深入浅出,带你学习 Unity 目录(?)[ ...

  9. 2020-12-13# **链表的增删改查,逆置**

    链表的增删改查,逆置,长度,排序,是否为空 1.``准备阶段## ## # include<stdio.h> # include<stdlib.h>typedef struct ...

最新文章

  1. Matlab绘图高级部分
  2. tensorflow 添加官方代码--以leaky_relu为例
  3. 高考查分数微信就能搞定
  4. python list遍历
  5. POJ - 2342 Anniversary party(树形dp入门)
  6. [Leetcode][第1392题][JAVA][最快乐前缀][KMP][字符串编码]
  7. MS SQL入门基础:触发器概述
  8. javaWEB知识总结——Ajax和Json
  9. 汇编语言基础之二 - 各种寻址和过程进出简介
  10. 有限域f9的特征是多少_密码学数学基本第十一讲有限域.ppt
  11. close 和 shutdown 的差别
  12. 从启动过程讲述普元Mobile 8.0基座
  13. 学生DW静态网页设计—西安旅游-高质量(9页) HTML+CSS+JavaScript 学生DW网页设计
  14. Android客户端和Java服务器端集成支付宝
  15. Google Adsense通过西联快汇收取收入的详细步骤
  16. PDPS软件:机器人仿真动画视频输出功能介绍与使用方法
  17. 郭晶晶家的象棋私教,好家伙是个机器人
  18. 香港监管机构收紧加密货币相关法规
  19. 基于“python+”潮汐、风驱动循环、风暴潮等海洋水动力模拟
  20. 「MoreThanJava」计算机发展史—从织布机到IBM

热门文章

  1. Rancher首席架构师解读Fleet:它何以管理百万集群?
  2. 不管你在几线城市,这几个公众号请收好!
  3. 常见的SQL跟数据库优化
  4. 警惕团队“蘑菇种植法”
  5. 一文读懂CPU缓存原理!
  6. 在oracle环境变量里,oracle环境变量详解
  7. linux shell until语句详解
  8. CAD二次开发--如何通过代码禁止“CAD对象捕捉”捕捉到指定实体(含源代码)
  9. ps钢笔工具的使用1
  10. 微信小游戏跳一跳辅助尝试留言版