通过键盘读入数据,创建一只带有头点的单链表。要求能够实现求单链表的长度,查询单链表中指定位置上的节点信息,能够进行节点的插入、删除、查询、输出操作

# include "stdio.h"
# include "stdlib.h"
/*构造链表节点的数据类型*/
struct Node
{int data;struct Node *next;
};
/*对链表进行初始化操作*/
struct Node *InitList(struct Node *L)
{struct Node *head = NULL;head = (struct Node *)malloc(sizeof(struct Node));if(! head){return 0;}head->next=NULL;L = head;return L;
}
/*求链表中节点的个数,即链表长度*/
int ListLength(struct Node *L)
{struct Node *p = NULL;int count = 0;p = L;while(p->next){count++;p = p->next;} return count;
}
/*创建链表,将新生成的节点插入到链表的表头*/
struct Node *CreatList(struct Node *L, int n)
{int i;struct Node *p = NULL;for(i=n; i>0; i--){/*将新生成的节点插入到链表中*/p = (struct Node *)malloc(sizeof(struct Node));scanf("%d",&p->data);p->next = L->next;L->next = p;}return L;} /*对链表进行节点的插入操作*/struct Node *ListInsert(struct Node *L, int i, int e){int j = 0;struct Node *s = NULL, *p = NULL;p = L;while(p&&j<i-1){p = p->next;j++;}if(!p||j>i-1){printf("输入的位置不合法!\n");return L;}/*生成一个新的节点s*/s = (struct Node *)malloc(sizeof(struct Node));s->data = e;/*节点的后插操作*/s->next = p->next;p->next = s;return L; }/*对链表进行节点的删除操作*/struct Node *ListDelete(struct Node *L, int i){int j;struct Node *q = NULL, *p = NULL;p = L;j = 0; /*查询指定位置上的节点*/while(p->next && j<i-1){p = p->next;j++;} if(!(p->next) || j>i-1){printf("输入的位置不合法!\n");return L;}/*删除指定的节点*/q = p->next;p->next = q->next;free(q);return L; }/*对链表中的节点进行查询操作*/int GetElem(struct Node *L, int i){int j,e;struct Node *p = NULL;if(i<1 || i>ListLength(L)){printf("输入的位置不合法!\n");return 0;} p = L->next;j = 1;while(j<i){p = p->next;j++;}e = p->data;printf("第%d个元素的数据为%d\n",i,e);  }/*链表的操作*/void menu(){printf("**************************目录************************\n");printf("输出这只单链表                                       1\n");printf("在单链表中插入一个新节点                             2\n");printf("在单链表中删除指定节点                               3\n");printf("查询单链表中的节点                                   4\n");printf("退出                                                0\n");  printf("******************************************************\n");} /*主程序*/int main(){int n,m,i,e;struct Node *L = NULL, *p = NULL; L = InitList(L);printf("请输入元素个数");scanf("%d",&n);printf("依次输入%d个元素的数据(空格隔开):",n);L = CreatList(L,n);do{printf("\n\n");menu();printf("请输入你的选择:");scanf("%d",&m);switch(m){case 1:printf("这只单链表为:");p = L->next;while(p!=NULL){printf("%d->",p->data);p = p->next;}printf("\b\b\b\b");printf("\n");break;case 2:printf("依次输插入位置和数据元素(空格隔开):");scanf("%d %d",&i,&e);L = ListInsert(L,i,e);break;case 3:printf("输入需要删除的元素的位置:");scanf("%d",&i);L = ListDelete(L,i);break;case 4:printf("输入需要查询元素的位置:");scanf("%d",&i);GetElem(L,i);break;case 0:printf("退出\n");break;default:printf("输入错误!\n");}            }while(m!=0);return 0;}

单链表--键盘输入、插入、删除、查询、输出相关推荐

  1. 学生管理系统(第一写)用C语言写,单链表实现,插入,查询,浏览,修改,删除的功能源码

    标题 学生管理系统 #define _CRT_SECURE_NO_WARNINGS #include <malloc.h> #include #include <stdio.h> ...

  2. 使用OC实现单链表:创建、删除、插入、查询、遍历、反转、合并、判断相交、求成环入口...

    一.概念 链表和数组都是一种线性结构,数组有序存储的,链表是无序存储的. 数组中的每一个元素地址是递增或者递减的关系,链表的每一个节点的地址没有此规律,它们是通过指针的指向连接起来. 链表种类:单链表 ...

  3. 6-8 从单链表LA指定位置删除连续n个元素并插入单链表LB的指定位置 (10 分)

    6-8 从单链表LA指定位置删除连续n个元素并插入单链表LB的指定位置 (10 分) 设指针la和lb分别指向两个无头结点单链表中的首元结点,试编写算法,从表la中删除自第i个元素起共len个元素,并 ...

  4. 单链表的创建、删除、反转、插入、排序操作

    单链表的创建.删除.反转.插入.排序操作 文章目录 单链表的创建.删除.反转.插入.排序操作 1.1 链表引言 1.2 单链表节点的数据结构 1.3 创建链表 1.4 打印整个链表 1.5 链表插入数 ...

  5. 单链表基本操作的实现——删除

    一. 按值删除元素 //删除 void DeleteElem(LinkList &L, ElemType e) {LinkList p = L;//p指向头结点LinkList q = NUL ...

  6. java数组元素的输入_java基础--键盘输入一个数,输出数组中指定元素

    java基础--键盘输入一个数,输出数组中指定元素 java基础--键盘输入一个数,输出数组中指定元素 package com.lcn.day05; import java.util.Scanner; ...

  7. Java学习之编写实现简单加密的程序,要求从键盘输入一个字符,输出加密后的字符。

    案例介绍: 编写实现简单加密的程序,要求从键盘输入一个字符,输出加密后的字符. 加密规则:输入A,输出Z;输入B,输出Y:输入a,输出z;输入b,输出y. 案例代码: import java.io.* ...

  8. C语言 编一程序,从键盘输入一个实数,输出其绝对值。

    编一程序,从键盘输入一个实数,输出其绝对值. 常规方法: #include<stdio.h> main() {float fx;printf("please input a fl ...

  9. 【问题描述】3.1.5 用整数1~7依次表示星期一至星期日。由键盘输入一个整数,输出对应的英文表示,如果输入的整数在1~7之外,输出“Error”信息。【样例输入1】1【样例输出1】Monda

    [问题描述]3.1.5 用整数1~7依次表示星期一至星期日.由键盘输入一个整数,输出对应的英文表示,如果输入的整数在1~7之外,输出"Error"信息. [样例输入1]1 [样例输 ...

最新文章

  1. Skynet通讯遇到的奇怪问题
  2. 如何在Winform界面中设计图文并茂的界面
  3. Eclipse反编译插件: Jodeclipse与JadClipse
  4. jmeter 取json值_干货丨实战经验分析,带你走进Jmeter参数化
  5. git checkout -b dev origin/dev详解
  6. JAVA中怎么设置文本域位置_java – 如何在JTextArea中更改文本的位置
  7. 处理时间_4_计算时间列所在的周的序号
  8. 《Python数据科学实践指南》——0.2节如何成为数据科学家
  9. linux sshd进程起不来,linux sshd服务异常
  10. 动态风云--互联网感言(三)
  11. install mysql 5.6.22 source code
  12. 为什么说GraphQL可以取代REST API?
  13. 手机 com.android.backupconfirm可以删除吗,手机上什么文件可以删除?答案都在这里了...
  14. HBase EndPoint加载失败
  15. 转载:在Python 3中使用深度森林(Deep Forest)进行分类
  16. Jupyterlab 执行时间插件
  17. HashMap底层数据结构
  18. 计算机ppt音乐,PPT制作-背景音乐最全面设置教程
  19. 最全的英语收藏夹(精品)
  20. 【beyong-sms】一款支持多家短信服务商优美的PHP短信发送库

热门文章

  1. response.setHeader()的用法
  2. [导入]《交互设计之路——让高科技产品回归人性》读书笔记(一)
  3. mysql 1046 3d000_老师 出现ERROR 1046(3D000): No Database Selected怎么办
  4. python网络信息提取_Python网络爬虫与信息提取入门13
  5. 超好用的Windows管理器工具
  6. 数据结构一:链表(约瑟夫问题)
  7. 串行任务如何提高效率Java_具有相同属性任务串行有序执行的线程池设计
  8. 怎么将多个html组合_技巧分享之在HTML元素中添加逼真阴影的教程
  9. JVM实战与原理---字节码执行引擎
  10. 工业用微型计算机(17)-指令系统(12)