单链表的删除操作的实现

1000(ms)

65535(kb)

2896 / 13622

建立长度为n的单链表,删除第i个结点之前的结点。

输入

第一行为自然数n,表示链式线性表的长度;
第二行为n个自然数表示链式线性表各元素值;
第三行为指定的删除参数i。

输出

指定删除位置合法时候,输出删除元素后的链式线性表的所有元素,元素之间用一个空格隔开。
输入不合法,输出"error!"。

样例输入

5
1 2 3 4 5
3

样例输出

1 3 4 5
#include<stdio.h>
#include<malloc.h>
struct LinkNode
{int data;struct LinkNode* next;
};struct LinkNode* CreateList(int n)
{struct LinkNode *head,*p1,*p2;//声明头指针和p1,p2操作指针 head=p1=p2=(struct LinkNode*)malloc(sizeof(struct LinkNode));//申请空间,并且将head,p1,p2指向这个空间 scanf("%d",&p1->data);//储存单链表第一个数据 for(int i=1;i<n;i++)//循环储存单链表第二个到最后的所有数据 {p2=(struct LinkNode*)malloc(sizeof(struct LinkNode));//申请一个新的空间,并且p2指向这个空间 p1->next=p2;//p1的next指向下一个结点 p1=p2;//p1指向p2申请的新结点 scanf("%d",&p1->data);//储存数据 }p1->next=NULL;return head;
}
bool ListDelete(struct LinkNode*&head,int i,int n)
{struct LinkNode *p,*q;p=head;if(i<=1||i>n+1)//如果输入的删除位置小于等于0或者大于单链表长度+1则输入不合法,返回false return false;if(i==2)//如果如果删除第一个结点,则设置头结点为头结点的next即可 {head=p->next;free(p);//释放空间 }else{for(int j=0;j<i-3;j++)//循环查找到删除位置的前一个位置 {p=p->next;}q=p->next; p->next=q->next;//设置删除位置的前一个位置结点的next free(q);//释放删除结点的空间 }return true;
}
int main()
{int n,i;struct LinkNode *head,*p;scanf("%d",&n);head=CreateList(n);scanf("%d",&i);if(ListDelete(head,i,n)){p=head;while(p!=NULL){printf("%d ",p->data);p=p->next;}}else{printf("error!");}
}
/*
#include<stdio.h>
int main()
{int n,a[100],i;scanf("%d",&n);for(int j=0;j<n;j++){scanf("%d",&a[j]);}scanf("%d",&i);if(i<=1||i>n+1)printf("error!");else{for(int j=0;j<n;j++){if(j=i-2)for( ;j<n-1;j++){a[j]=a[j+1];}}for(int j=0;j<n-1;j++){printf("%d ",a[j]);}}}
*/ 

西南科技大学OJ题 单链表的删除操作的实现0953相关推荐

  1. SWUST OJ 953: 单链表的删除操作的实现

    建立长度为n的单链表,删除第i个结点之前的结点. 第一行为自然数n,表示链式线表的长度: 第二行为n个自然数表示链式线性表各元素值: 第三行为指定的删除参数i. #include <stdio. ...

  2. SWUSTOJ #953 单链表的删除操作的实现

    SWUSTOJ #953 单链表的删除操作的实现 题目 输入 输出 样例输入 样例输出 源代码 题目 建立长度为 n 的单链表,删除第 i 个结点之前的结点. 输入 第一行为自然数 n,表示链式线性表 ...

  3. 953: 单链表的删除操作的实现

    题目描述 建立长度为n的单链表,删除第i个结点之前的结点. 输入 第一行为自然数n,表示链式线性表的长度: 第二行为n个自然数表示链式线性表各元素值: 第三行为指定的删除参数i. 输出 指定删除位置合 ...

  4. 西南科技大学 swust oj #952: 单链表的插入操作的实现

    题目描述 建立长度为n的单链表,在第i个结点之前插入数据元素data. 输入 第一行为自然数n,表示链式线性表的长度: 第二行为n个自然数表示链式线性表各元素值: 第三行为指定插入的位置i:第四行为待 ...

  5. 西南科技大学OJ题 邻接矩阵到邻接表1055

    邻接矩阵到邻接表 5000(ms) 10000(kb) 2341 / 5552 假设无向图G采用邻接矩阵存储,编写一个算法输出邻接表. 输入 第一行为一个整数n,表示顶点的个数(顶点编号为0到n-1) ...

  6. 西南科技大学OJ题 求最小生成树(Prim算法)1075

    求最小生成树(Prim算法) 1000(ms) 10000(kb) 2256 / 4495 Tags: 生成树 求出给定无向带权图的最小生成树.图的定点为字符型,权值为不超过100的整形.在提示中已经 ...

  7. 西南科技大学OJ题 哈夫曼译码0986

    哈夫曼译码 1000(ms) 10000(kb) 1974 / 4142 通常要求根据给定的编码本对密文进行解码.现已给定相应字符的哈夫曼编码,要求根据编码对密文进行解码.(建立哈夫曼树以及编码.主函 ...

  8. 西南科技大学OJ题 顺序表插入操作的实现0943

    顺序表插入操作的实现 建立长度为n的顺序表,在指定的数据元素item之前插入数据元素data.如果指定的数据元素item不存在,则将data插入到顺序表的尾端.(数据类型为整型) 输入 第一行为顺序表 ...

  9. 西南科技大学OJ题 邻接矩阵存储简单路径1070

    邻接矩阵存储简单路径 5000(ms) 10000(kb) 2197 / 4175 Tags: 邻接矩阵 假设无向图G采用邻接矩阵存储,设计一个算法,输出图G中从顶点u到v的所有简单路径. 输入 简单 ...

最新文章

  1. Linux数据文件自动迁移,linux下增加磁盘改变指定文件路径分区挂载点和迁移数据...
  2. 2017-2018 20155309南皓芯 信息安全系统基础设计第十四周博客
  3. 操作系统--第一章 绪论(408计算机考研)
  4. Linux查看设备 eth,lspci grep Eth,查看Linux下的各种硬件设备是否识别或存在之用
  5. 使用序列化查找对象中的脏字段
  6. extjs5(03--项目中文件的加载过程)
  7. NSInvocation的一种用法
  8. python 中 * 的使用和表示含义
  9. 如何为Linux系统中的SSH添加双重认证
  10. 从头开始学JavaScript (四)——操作符
  11. 软考中级信息安全工程师视频资料
  12. 华为c8818刷原生Android 6,华为C8818刷机教程_华为C8818强刷官方rom系统包
  13. ImageJ Nikon_ImageJ使用教程之自动细胞计数篇
  14. 为什么python打不开_Python打不开.py文件
  15. g++ 安装python_Python趣用—配平化学方程式!
  16. Win10编译OpenJDK源码
  17. 凯文·凯利又出预言:未来科技将由这四股力量推动!
  18. 华夏ERP前端的问题解决
  19. qchart 坐标轴设置_QChart学习之QValueAxis坐标轴设置
  20. 分区助手各版本比较(图文详解)

热门文章

  1. Idea数字符号乱码
  2. 模糊神经网络matlab定义,模糊神经网络matlab仿真
  3. LMX2594驱动编程
  4. python获取中文字体点阵坐标_在squ中高效在线获取点阵点
  5. 传智播客-刘意-java深入浅出精华版学习笔记Day08
  6. 翻译经典之《Cisco Lan Switching》:前言
  7. SQL挂起的解决办法 SQL Server
  8. DXGI快速截屏录屏技术,高帧率直播桌面
  9. 用MacBook Pro玩弄51单片机的过程_无基础
  10. Windows下CMake安装使用