单链表实现增删改查(进化版)
主函数:
链表.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);}
}
效果图:
单链表实现增删改查(进化版)相关推荐
- 通用版!完整代码,单链表SingleLinkedList增删改查,反转,逆序,有效数据等Java实现
文章目录 节点类 链表类(主要) 测试类 小结 节点类 可以根据需要,对节点属性进行修改.注意重写toString()方法,以便后续的输出操作. //节点类 class Node {public in ...
- 单链表实现增删改查(含头结点)
** 单链表实现增删改查(含头结点) ** **## 单链表** package com.Linked;public class HeadLinked {public String name;// 链 ...
- C语言 单链表的增删改查
单链表的增删改查 目录 单链表的增删改查 链表的创建和输出(有头结点) 链表的查找 链表的删除 链表的修改 链表是一种最常见地采用动态存储分配方式的数据结构,相较于数组而言它更加灵活. 单链表的特点 ...
- 带头节点单链表的增删改查
单链表有很多结构循环单链表,有头节点的单链表,无头节点的单链表,双节点单链表,以下源码是以有一个头节点的单链表为例写的增删改查的各种功能,就是下图 然后各个注释也在函数后面写着,这玩意确实还挺难,源码 ...
- java单链表 提供增删改查_java实现单链表增删改查的实例代码详解
package 数据结构算法.链表; /* *定义节点 * 链表由节点构成 */ public class node { private e e; //数据data private node next ...
- C语言单链表实现增删改查
1.概述 单链表使是一种链式存储结构,链表中的数据以结点的方式表示.每个结点由数据域和指针域两部分构成.数据域存储链表的数据元素,指针域存储连接相邻结点的地址. 2.单链表基本组成 typedef s ...
- Django学习笔记(10)——Book单表的增删改查页面
一,项目题目:Book单表的增删改查页面 该项目主要练习使用Django开发一个Book单表的增删改查页面,通过这个项目巩固自己这段时间学习Django知识. 二,项目需求: 开发一个简单的Book增 ...
- 极其方便的使用Mybatis单表的增删改查
[活动]Python创意编程活动开始啦!!! CSDN日报20170427 --<如何在没有实际项目经验的情况下找到工作> 深入浅出,带你学习 Unity 目录(?)[ ...
- 2020-12-13# **链表的增删改查,逆置**
链表的增删改查,逆置,长度,排序,是否为空 1.``准备阶段## ## # include<stdio.h> # include<stdlib.h>typedef struct ...
最新文章
- Matlab绘图高级部分
- tensorflow 添加官方代码--以leaky_relu为例
- 高考查分数微信就能搞定
- python list遍历
- POJ - 2342 Anniversary party(树形dp入门)
- [Leetcode][第1392题][JAVA][最快乐前缀][KMP][字符串编码]
- MS SQL入门基础:触发器概述
- javaWEB知识总结——Ajax和Json
- 汇编语言基础之二 - 各种寻址和过程进出简介
- 有限域f9的特征是多少_密码学数学基本第十一讲有限域.ppt
- close 和 shutdown 的差别
- 从启动过程讲述普元Mobile 8.0基座
- 学生DW静态网页设计—西安旅游-高质量(9页) HTML+CSS+JavaScript 学生DW网页设计
- Android客户端和Java服务器端集成支付宝
- Google Adsense通过西联快汇收取收入的详细步骤
- PDPS软件:机器人仿真动画视频输出功能介绍与使用方法
- 郭晶晶家的象棋私教,好家伙是个机器人
- 香港监管机构收紧加密货币相关法规
- 基于“python+”潮汐、风驱动循环、风暴潮等海洋水动力模拟
- 「MoreThanJava」计算机发展史—从织布机到IBM