指针——可能我学的还只是c++的皮毛
单点时限: 2.0 sec
内存限制: 256 MB
实现线性链表的插入与删除操作
只需完成给定函数的定义。
NODE* insertLinklist(NODE* head, int tar, int val) {
// TODO
}
NODE* deleteLinklist(NODE* head, int tar) {
// TODO
}
其中
NODE表示链表的结构体,定义如下
typedef struct node
{
int data; //存储数据
struct node* next; //指向下一个节点的指针
} NODE;
head指向链表的头结点,如果链表为空,head为NULL
显然,为了完成该链表维护工作,你需要实现上述两个辅助函数
插入操作中:
tar,val表示将存放新值val的节点插入到值为tar的节点之后
(保证当链表不为空时,值为tar的节点一定在链表中,若有多个节点存放的值都为tar,则插入到第一个之后,若链表为空,则无视tar值,将val插入到
head后面,即将head指向这个新的节点)
删除操作中:
tar表示删除存放值为tar的节点(若有多个节点存放的值是tar,则删除第一个)
如果链表为空则忽略当前操作
提示
只能使用C或者C++提交。
对于C/C++,判题程序类似,如下:
#include <stdio.h>
#include <stdlib.h> typedef struct node
{
int data;
struct node* next;
} NODE; NODE* insertLinklist(NODE* head, int tar, int val);
NODE* deleteLinklist(NODE* head, int tar); /* 你的代码将会被嵌入在这个位置 */ int main()
{
/* 输入及其他处理,细节隐藏不表 */ NODE* head = createLinklist(/* 创建链表,细节隐藏不表 */); for (/* 若干操作,细节隐藏不表 */)
if(/* 判断插入还是删除,细节隐藏不表 */)
head = insertLinklist();
else
head = deleteLinklist(); /* 后续判题,细节隐藏不表 */ return 0;
} 虽说这只是一道不考的水题,但是弄得我头都大了;
NODE* insertLinklist(NODE* head, int tar, int val)
{
if(head==NULL)//空
{
NODE* p=(NODE*)malloc(sizeof(NODE));
p->data=val;
p->next=NULL;
head=p;
}
else
{
NODE* p=head;
NODE* pnew=(NODE*)malloc(sizeof(NODE));//动态申请指针
while(p->data!=tar)
{
p=p->next;
}
pnew->data=val;
pnew->next=p->next;
p->next=pnew;
} return head;
} NODE* deleteLinklist(NODE* head, int tar)
{
if(head==NULL) return head;
if(head->data==tar)
{
head=head->next;
return head;
}
NODE* last=head;
NODE* now=head->next;
while(now->data!=tar)
{
now=now->next;
last=last->next;
}
last->next=now->next;
return head;
}
指针还是用->吧,不然会CE;
NODE* p和NODE *p等价,看习惯;
还有要注意指针=指针,类型要看好;
如果要找到一个变量的地址,用int *p=&a;
&取地址
指针——可能我学的还只是c++的皮毛的更多相关文章
- Android开发音视频方向学习路线及资源分享,学完还怕什么互联网寒冬?
接触Android音视频这一块已经有一段时间了,跟普通的应用层开发相比,的确更花费精力.期间为了学习音视频的录制,编码,处理也看过大大小小的几十个项目.总体感觉就是知识比较零散,对刚入门的朋友比较不友 ...
- 学数据库还不会Select,SQL Select详解,单表查询完全解析?
查询操作是SQL语言中很重要的操作,我们今天就来详细的学习一下. 一.数据查询的语句格式 SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式> .. ...
- C语言指针专题——指针难学的4点原因
前一篇跟大家聊了聊指针的概念,可是就算了解了指针是什么,为什么依然感觉难学?我试着从几个点切入,聊聊指针难学之处. 文末会给大家推荐几本书,有需要的朋友可以看看! 难点1. 讨厌的星号 定义指针变量p ...
- iOS开发系列--C语言之指针
概览 指针是C语言的精髓,但是很多初学者往往对于指针的概念并不深刻,以至于学完之后随着时间的推移越来越模糊,感觉指针难以掌握,本文通过简单的例子试图将指针解释清楚,今天的重点有几个方面: 什么是指针 ...
- 黑马程序员_ C语言基础之指针(三)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 概览 指针是C语言的精髓,但是很多初学者往往对于指针的概念并不深刻,以至于学完之后随着时间的推移 ...
- (转)c指针
转自:http://www.cnblogs.com/wchhuangya/archive/2009/12/24/1631121.html 这两天开始搞BREW了,用的是C的语法.上学时学过的C都还给学 ...
- 听翁恺老师mooc笔记(6)--指针运算
指针值加1就是将指针值加上sizeof(指针所指变量的类型) 1+1=2,那么指针加1是加上了1这个数字吗?试一下,在代码中定义了char数组,char也是整数,数组名是ac,ac中有10个元素,0- ...
- C第九次博客作业--指针
一.PTA实验作业 题目1:两个4位正整数的后两位互换 1. 本题PTA提交列 2. 设计思路 3.代码截图 本题调试过程碰到问题及PTA提交列表情况说明 刚开始想到的交换是令t=a;a=b;b=t这 ...
- 深入了解C指针
前言:复杂类型说明 要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级 ...
随机推荐
- python03-break、continue、for循环、数据bytes类型、字符串与字节的关系、变量指向与深浅拷贝、set集合、文件操作
目录: 1.break.continue 2.for循环 3.数据bytes类型 4.字符串与字节的关系 5.变量指向与深浅拷贝 6.set集合 7.文件操作 一.break.continue bre ...
- poj 2406 求最短重复字串
题解: KMP中next数组的巧妙运用.在这里我们假设这个字符串的长度是len,那么如果len可以被len-next[len]整除的话,我们就可以说len-next[len]就是那个最短子串的长度为什 ...
- hdu 6153 思维+扩展kmp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6153 扩展kmp不理解的看下:http://www.cnblogs.com/z1141000271/p ...
- (一)Maven基础及第一个Maven工程
一.Maven介绍 ANT/Maven/gradle是一个项目管理工具,它包含了一项目对象模型(Project Object Model),一组标准集合,一个项目生命周期(Project Lifecy ...
- 获取类的描述信息 DescriptionAttribute
static void Main(string[] args) { var attrs = typeof(TestClass).GetCustomAttributes(typeof(System.Co ...
- SSL Virtual Servers
SSL Virtual Servers 来源 https://www.carlstalhood.com/ssl-virtual-servers-netscaler-12/ SSL Virtual Se ...
- java封装数据类型——Integer
今天来学习整型 int 的封装数据类型,Integer. 1. 定义 首先来看看定义.可以看到,Integer 继承 Number 抽象类,实现了 Comparable 接口.Number 类是常用数 ...
- C++线程同步之原子操作
所谓的原子操作就是指一个线程对于某一个资源做操作的时候能够保证没有其它的线程能够对此资源进行访问. 原子操作仅仅能够解决某一个变量的问题,只能使得一个整型数据做简单算术运算的时候是原子的. 以下案例需 ...
- Android开发中常见问题分析及解决
最近公司有新的业务需求,需要开发一款APP,因为我开发过Android APP(我想告诉他们,那是4年前的事了,嘤嘤嘤),就把开发任务交给我了,当然也不是我一个人啦,让我组开发小组,说白了,就是让我来 ...
- Docker安装nginx,把nginx.conf放入指定位置
拉取镜像 docker pull nginx 创建目录 创建一个目录用来存放文件,方便我们进行修改 mkdir -p /everything/nginx/conf /everything/nginx/ ...