关于c语言编写 单项链表 的创建、插入、修改、删除、显示、退出 的程序案例
#include<stdio.h>
#include<stdlib.h>#define OK 1
#define ERROR -1
/*******************定义节点结构*****************/
typedef struct Point
{int data;struct point * next;
}point,*ppoint;
/********************函数声明*********************/
listinsert(point *head);
outlist(point *head);
ListDelete (point *head);
listupdate (point *head);/*********************主函数**********************/main()
{point *head; int k; //选择器 head=(point*)malloc(sizeof(point));head->next=NULL;do {printf(" ╔-----------------------------------------------╗\n"); //显示一个简易菜单printf(" ┆ 1 --- 插入(Insert) ┆\n");printf(" ┆ 2 --- 修改(Update) ┆\n");printf(" ┆ 3 --- 删除(Delete) ┆\n");printf(" ┆ 4 --- 显示( Show ) ┆\n");printf(" ┆ 5 --- 退出( Exit ) ┆\n");printf(" ╚-----------------------------------------------╝\n"); printf("请输入所要进行的操作序号: ");scanf("%d",&k); //接受用户的选择switch(k) //接受用户的函数 {case 1:listinsert(head);break;case 2:listupdate (head);break;case 3:ListDelete (head);break;case 4:outlist(head);break;case 5:break;default:printf("错误选择!请重选\n");break;}}while(k!=5); //直到i被赋值为5return 0;
}/*******************************插**入**函**数***************************/listinsert(point *head){ // 在带头结点的单链线性表head的第i个元素之前插入元素eint i,e;ppoint p,s;int j = 0;printf("请输入要插入节点的位置: ");scanf("%d",&i);p = head; while (p && j < i-1){ // 寻找第i-1个结点p = p->next;++j;} if (!p || j > i-1) {printf("输入有误!!! 请重新输入!\n");return ERROR;} // i小于1或者大于表长s = (ppoint)malloc(sizeof(point)); // 生成新结点printf("请输入要插入节点的 值 : ");scanf("%d",&e);s->data = e; s->next = p->next; // 插入list中p->next = s;return OK;
} /*******************************删**除**函**数***************************/ListDelete (point *head){// 在带头结点的单链线性表L中,删除第i个元素,并由e返回其值point * p,*q;int i;int j = 0;p = head;
printf("请输入要删除节点的位置: ");
scanf("%d",&i);while (p->next && j < i-1) { // 寻找第i个结点,并令p指向其前趋p = p->next;++j;}if (!(p->next) || j > i-1) {printf("输入有误!!! 请重新输入!\n");return ERROR;} // 删除位置不合理q = p->next;p->next = q->next; // 删除并释放结点free(q);return OK;
} /*******************************修**改**函**数***************************/listupdate (point *head){// 在带头结点的单链线性表中,修改第i个元素,并由e返回其值point * p,*q;int i,ww,j = 0;p = head;
printf("请输入要修改节点的位置: ");
scanf("%d",&i);while (p->next && j < i-1) { // 寻找第i个结点,并令p指向其前趋p = p->next;++j;}if (!(p->next) || j > i-1) {printf("输入有误!!! 请重新输入!\n");return ERROR;} // 修改位置不合理printf("请输入要修改后节点的值: ");scanf("%d",&ww);p = p->next;p->data=ww;return OK;
}/*******************************显**示**函**数***************************/outlist(point *head) // 带入头指针 打印链表
{ point *p;p=head->next; puts("链表如下:");if(p==NULL){printf("链表为空!\n");exit(0);} //空表显示时执行printf("head");do{ printf(" -> %d",p->data);p=p->next;}while(p!=0);printf("\n\n");
}
关于c语言编写 单项链表 的创建、插入、修改、删除、显示、退出 的程序案例相关推荐
- R语言编写自定义函数、创建使用ggplot2生成图标(icon)的主题(theme)函数、使用ggplot2以及自定义的图标主题函数创建箱图(boxplot)图标、ggsave保存图标(png、svg
R语言编写自定义函数.创建使用ggplot2生成图标(icon)的主题(theme)函数.使用ggplot2以及自定义的图标主题函数创建箱图(boxplot)图标.ggsave保存图标(png.svg ...
- c语言实现单链表的创建(完整版)
使用c语言实现单链表是考研的重点.但是如何实现却是一个难点.下面是我写的一个简单的创建单链表的代码. #include<stdio.h> #include<stdlib.h> ...
- C语言单向动态链表程序,实现链表的建立,合并,重新排序,链表元素的插入与删除,以及根据元素成员的值进行元素删除。
LinkedList.cC exerciseCreated by y liu on 15/10/1.Copyright © 2015年 y liu. All rights reserved.//库&a ...
- DDL语言(库和表的创建、修改、删除)——MySQL
文章目录 DDL语言 1. 库的管理 1. 库的创建 2. 库的修改 3. 库的删除 2. 表的管理 1.表的创建 ★ 2.表的修改 (对表内的列进行操作) ①修改列名 ②修改列的类型或约束 ③添加新 ...
- 数据结构与算法——链式存储(链表)的插入及删除
持续分享嵌入式技术,操作系统,算法,c语言/python等,欢迎小友关注支持 上篇文章我们讲述了链表的基本概念及一些查找遍历的方法,本篇我们主要将一下链表的插入删除操作,以及采用堆栈方式如何创建链表. ...
- 数据库基础--数据库基础管理(创建库/表 以及插入修改删除表数据)
1.啥子是数据库–存储数据的仓库 2.什么是数据–音乐,电影,文本,图片等 常见的数据库软件 Oracle 不开源 跨平台 厂商:甲骨文 MySQL 开源 跨平台 厂商:甲骨文 SQL Server ...
- 双链表的基本操作---插入,删除,交,并,相邻元素的交换,不相邻元素的交换...
这个链表是带有表头的双链表.实现链表的一些规范操作,初始化,插入,删除等.包括两个头文件list.h,fatal.h,库函数list.c,测试函数testlist.c.头文件放的都是函数声明,库函数l ...
- 单链表的基本操作---插入,删除,交,并,相邻元素的交换等
这个链表是带有表头的单链表.实现链表的一些规范操作,初始化,插入,删除等.包括两个头文件list.h,fatal.h,库函数list.c,测试函数testlist.c.头文件放的都是函数声明,库函数l ...
- c语言用链表对学生成绩排序,学生成绩排序和平均分计算利用c语言链表的创建插入删除.doc...
#define NULL 0 #define LEN sizeof(struct student) struct student { long num; float score; struct stu ...
最新文章
- KeyError: “None of [Int64Index([...],\n dtype=‘int64‘, length=739)] are in the [columns]“
- 《数学之美》第16章 信息指纹及其应用
- javascript高级程序设计笔记
- ExtJs6 理解 -- Ext.data.proxy.Proxy
- python字典键值可以是元组或列表吗_Python列表、元组、字典、集合的内置使用方法...
- TensorFlow可以“预装”数据集了,新功能Datasets出炉
- 3.5 RNN 层使用方法
- PHP使用缓存生成静态页面
- Linux标准化:避免重蹈UNIX的覆辙
- 利用saopanel系统的UDP转发模式破解校园网
- java csv oracle数据库_从文件(*.csv或*.txt)导入Oracle数据库Java源代码
- 安全组-出入战规则设置
- 《大掌门》欧阳刘彬:基于Cocos2d-x引擎开发经验分享
- 中水是什么?有什么用途呢?
- 性能测试之jmeter(下载安装)
- 梆梆加固的病毒分析-破解篇
- 提取音乐用什么软件哪个好
- maven命令的方式
- 《解析深度学习》部分笔记
- 原华为区块链科学家黄连金先生受邀担任Hashgard基金会战略顾问
热门文章
- 诗和远方:无题(四十六)
- 诗与远方:无题(三十七)- 凿壁偷光
- Struts2的标签概述
- spring自动装配、注解
- POI导入导出Excel(HSSF格式,User Model方式)
- 开发不能上外网怎么查资料_中考生不能复读,近一半上不了高中,怎么办?
- mysql统计姓名为小明_Mysql 统计查询相同字段只统计一条
- enum should not be used as an identifier since it is a reserved keyword from source level 1.5 on
- ARM linux的启动部分源代码简略分析【转】
- Linux-DNS服务器(2):BIND区域传送