西南科技大学OJ题 单链表的删除操作的实现0953
单链表的删除操作的实现
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相关推荐
- SWUST OJ 953: 单链表的删除操作的实现
建立长度为n的单链表,删除第i个结点之前的结点. 第一行为自然数n,表示链式线表的长度: 第二行为n个自然数表示链式线性表各元素值: 第三行为指定的删除参数i. #include <stdio. ...
- SWUSTOJ #953 单链表的删除操作的实现
SWUSTOJ #953 单链表的删除操作的实现 题目 输入 输出 样例输入 样例输出 源代码 题目 建立长度为 n 的单链表,删除第 i 个结点之前的结点. 输入 第一行为自然数 n,表示链式线性表 ...
- 953: 单链表的删除操作的实现
题目描述 建立长度为n的单链表,删除第i个结点之前的结点. 输入 第一行为自然数n,表示链式线性表的长度: 第二行为n个自然数表示链式线性表各元素值: 第三行为指定的删除参数i. 输出 指定删除位置合 ...
- 西南科技大学 swust oj #952: 单链表的插入操作的实现
题目描述 建立长度为n的单链表,在第i个结点之前插入数据元素data. 输入 第一行为自然数n,表示链式线性表的长度: 第二行为n个自然数表示链式线性表各元素值: 第三行为指定插入的位置i:第四行为待 ...
- 西南科技大学OJ题 邻接矩阵到邻接表1055
邻接矩阵到邻接表 5000(ms) 10000(kb) 2341 / 5552 假设无向图G采用邻接矩阵存储,编写一个算法输出邻接表. 输入 第一行为一个整数n,表示顶点的个数(顶点编号为0到n-1) ...
- 西南科技大学OJ题 求最小生成树(Prim算法)1075
求最小生成树(Prim算法) 1000(ms) 10000(kb) 2256 / 4495 Tags: 生成树 求出给定无向带权图的最小生成树.图的定点为字符型,权值为不超过100的整形.在提示中已经 ...
- 西南科技大学OJ题 哈夫曼译码0986
哈夫曼译码 1000(ms) 10000(kb) 1974 / 4142 通常要求根据给定的编码本对密文进行解码.现已给定相应字符的哈夫曼编码,要求根据编码对密文进行解码.(建立哈夫曼树以及编码.主函 ...
- 西南科技大学OJ题 顺序表插入操作的实现0943
顺序表插入操作的实现 建立长度为n的顺序表,在指定的数据元素item之前插入数据元素data.如果指定的数据元素item不存在,则将data插入到顺序表的尾端.(数据类型为整型) 输入 第一行为顺序表 ...
- 西南科技大学OJ题 邻接矩阵存储简单路径1070
邻接矩阵存储简单路径 5000(ms) 10000(kb) 2197 / 4175 Tags: 邻接矩阵 假设无向图G采用邻接矩阵存储,设计一个算法,输出图G中从顶点u到v的所有简单路径. 输入 简单 ...
最新文章
- Linux数据文件自动迁移,linux下增加磁盘改变指定文件路径分区挂载点和迁移数据...
- 2017-2018 20155309南皓芯 信息安全系统基础设计第十四周博客
- 操作系统--第一章 绪论(408计算机考研)
- Linux查看设备 eth,lspci grep Eth,查看Linux下的各种硬件设备是否识别或存在之用
- 使用序列化查找对象中的脏字段
- extjs5(03--项目中文件的加载过程)
- NSInvocation的一种用法
- python 中 * 的使用和表示含义
- 如何为Linux系统中的SSH添加双重认证
- 从头开始学JavaScript (四)——操作符
- 软考中级信息安全工程师视频资料
- 华为c8818刷原生Android 6,华为C8818刷机教程_华为C8818强刷官方rom系统包
- ImageJ Nikon_ImageJ使用教程之自动细胞计数篇
- 为什么python打不开_Python打不开.py文件
- g++ 安装python_Python趣用—配平化学方程式!
- Win10编译OpenJDK源码
- 凯文·凯利又出预言:未来科技将由这四股力量推动!
- 华夏ERP前端的问题解决
- qchart 坐标轴设置_QChart学习之QValueAxis坐标轴设置
- 分区助手各版本比较(图文详解)