王道oj/problem18
网址:略
思路:见注释;有bug:插入时1和2的结果正好相反,稍后编辑。
代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct LNode {
ElemType data;
struct LNode* next;//指向下一个结点
} LNode,*LinkList;
//头插法新建链表
LinkList CreatList1(LinkList& L)//list_head_insert
{
LinkList s; int x;
L = (LinkList)malloc(sizeof(LNode));//带头结点的链表,指针就是存地址的一个空间
L->next = NULL;
scanf("%d", &x);
while (x!= 9999) {
s = (LinkList)malloc(sizeof(LNode));//申请一个新空间s,强制类型转换
s->data = x;//把读到的值,给新空间中的data
s->next = L->next;
L->next = s;
scanf("%d", &x);
}
return L;
}
//尾插法
LinkList CreatList2(LinkList& L)//list_tail_insert
{
int x;
L = (LinkList)malloc(sizeof(LNode));
LNode* s, * r = L;//LinkList s,r = L;也可以
//s代表新结点,r代表表尾结点
scanf("%d", &x);
while (x!= 9999)
{
s = (LNode*)malloc(sizeof(LNode));
s->data = x;
r->next = s;
r = s;
scanf("%d", &x);
}
r->next = NULL;
return L;
}
//查找结点的值
LNode* GetElem(LinkList L, int i)
{
int j = 1;
LNode* p = L->next;//让p指向第一个节点
if (i == 1)
return L;
if (i < 0)
return NULL;
while (p && j < i)
{
p = p->next;
j++;
}
return p;
}
//查找链表中是否有此值
LNode* LocateElem(LinkList L, int e)
{
LinkList p = L->next;
while (p && p->data != e)
{
p = p->next;
}
return p;
}
//往第i个位置插入元素
bool ListFrontInsert(LinkList L, int i, ElemType e)
{
LinkList p = GetElem(L,i - 1);
if (NULL == p)
{
return false;
}
LinkList s = (LNode *)malloc(sizeof(LNode));
s->data = e;
s->next = p->next;
p->next = s;
return true;
}//插入有点问题,插入1和2颠倒了?
//删除指定位置的元素
bool ListDelete(LinkList L, int i)
{
LinkList p = GetElem(L, i - 1);
if (NULL == p)
return false;
LinkList q = p->next;
p->next = q->next;
free(q);
q = NULL;
return true;
}
void PrintList(LinkList L)//打印链表
{
L = L->next;
while (L != NULL)
{
printf("%3d", L->data);
L = L->next;
}
printf("\n");
}
int main()
{
LinkList L;//链表头,是结构体指针类型
LinkList search;//用来存储得到的某一个节点
CreatList2(L);
search = GetElem(L, 2);
if (search != NULL)
{
printf("%d\n", search->data);
}
ListFrontInsert(L, 1, 99);
PrintList(L);
ListDelete(L, 4);
PrintList(L);
return 0;
}
王道oj/problem18的更多相关文章
- Online Judge(OJ)搭建(第一版)
搭建 OJ 需要的知识(重要性排序): Java SE(Basic Knowledge, String, FileWriter, JavaCompiler, URLClassLoader, Secur ...
- [C#] 逆袭——自制日刷千题的AC自动机攻克HDU OJ
前言 做过杭电.浙大或是北大等ACM题库的人一定对“刷题”不陌生,以杭电OJ为例:首先打开首页(http://acm.hdu.edu.cn/),然后登陆,接着找到“Online Exercise”下的 ...
- oj Rapid Typing
import bs4 import requests import urllib2 import time import base64 session=requests.Session() respo ...
- 在线OJ实用技巧(转载)
1.一般用C语言节约空间,要用C++库函数或STL时才用C++; cout.cin和printf.scanf最好不要混用. 2.有时候int型不够用,可以用long long或__int64型(两个下 ...
- OJ生成器(一)制作Online Judge前的准备和策划
我这校区新的微机老师斗志昂扬,准备让我们这学校萎靡的信息技术竞赛重振雄风.然后有一次我半开玩笑地说建一个自己的OJ吧,老师也就鼓励我去做了. 开什么玩笑……!我可是马上要参加NOIP的人! 于是老师说 ...
- 【LeetCode OJ】Validate Binary Search Tree
Problem Link: https://oj.leetcode.com/problems/validate-binary-search-tree/ We inorder-traverse the ...
- 【LeetCode OJ】Recover Binary Search Tree
Problem Link: https://oj.leetcode.com/problems/recover-binary-search-tree/ We know that the inorder ...
- 【LeetCode OJ】Same Tree
Problem Link: https://oj.leetcode.com/problems/same-tree/ The following recursive version is accepte ...
- 【LeetCode OJ】Symmetric Tree
Problem Link: https://oj.leetcode.com/problems/symmetric-tree/ To solve the problem, we can traverse ...
- 【LeetCode OJ】Binary Tree Level Order Traversal
Problem Link: https://oj.leetcode.com/problems/binary-tree-level-order-traversal/ Traverse the tree ...
随机推荐
- 一文掌握ArrayList和LinkedList源码解读
大家好,我是Leo! 今天来看一下ArrayList和LinkedList的源码,主要是看一下常用的方法,包括像add.get.remove方法,大部分都是从源码直接解读的,相信大家读完都会有一定收获 ...
- 谁想和我一起做低代码平台!一个可以提升技术,让简历装x的项目
序言 正如文章标题所述,最近一段时间低代码这个概念非常的火,但其实在不了解这个东西的时候觉得它真的很炫酷,从那时就萌生了做一个低代码平台的想法. 但随着时间的变化,现在市面上低代码各个业务方向的平台都 ...
- AI天后,在线飙歌,人工智能AI孙燕姿模型应用实践,复刻《遥远的歌》,原唱晴子(Python3.10)
忽如一夜春风来,亚洲天后孙燕姿独特而柔美的音色再度响彻华语乐坛,只不过这一次,不是因为她出了新专辑,而是人工智能AI技术对于孙燕姿音色的完美复刻,以大江灌浪之势对华语歌坛诸多经典作品进行了翻唱,还原度 ...
- 2023-03-30:用Go语言改写FFmpeg示例decode_audio.c,实现高效音频解码。
2023-03-30:用Go语言改写FFmpeg示例decode_audio.c,实现高效音频解码. 答案2023-03-30: 这个程序的主要功能是将 MP2 音频文件解码为 PCM 格式,并输出到 ...
- 2020-10-10:OOM都有哪些,说出几种?
福哥答案2020-10-10:#福大大架构师每日一题# [答案参考了此链接:](https://cloud.tencent.com/developer/article/1480668) 本地方法栈:1 ...
- 2022-05-02:给定一个数组arr,一个正数num,一个正数k, 可以把arr中的某些数字拿出来组成一组,要求该组中的最大值减去最小值<=num, 且该组数字的个数一定要正好等于k, 每个数字只
2022-05-02:给定一个数组arr,一个正数num,一个正数k, 可以把arr中的某些数字拿出来组成一组,要求该组中的最大值减去最小值<=num, 且该组数字的个数一定要正好等于k, 每个 ...
- 2021-11-27:给定一个数组arr,长度为N,做出一个结构,可以高效的做如下的查询: 1) int querySum(L,R) : 查询arr[L...R]上的累加和; 2) int query
2021-11-27:给定一个数组arr,长度为N,做出一个结构,可以高效的做如下的查询: int querySum(L,R) : 查询arr[L-R]上的累加和; int queryAim(L,R) ...
- 解决pytest+allure报告中文乱码
在conftest文件里添加钩子函数: def pytest_collection_modifyitems(items): """ 测试用例收集完成时,将收集到的item ...
- python环境的安装与设置和oneforall的安装与使用
下载python: https://www.python.org/downloads/windows/ 安装python 如果不需要修改路径,下面两个√打开后,点击上面的install now 也可以 ...
- Random库用法详解
梅森旋转算法实现 基本随机数函数 seed(a=None): 初始化给定的随机数种子,默认为当前系统时间. 只要随机数种子相同,产生的随机数序列也相同. random(): 生成一个[0.0,1.0] ...