输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
代码如下:
int* exchange(int* nums, int numsSize, int* returnSize)
{
int i=0;
int s=0;
int* str=(int*)malloc(sizeof(int)*numsSize);
*returnSize=numsSize;
for(i=0;i<numsSize;i++)
{
if(nums[i]%2==1)
{
str[s]=nums[i];
s++;
}
}
for(i=0;i<numsSize;i++)
{
if(nums[i]%2==0)
{
str[s]=nums[i];
s++;
}
}
return str;
}
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
1.设置哨兵结点法:不用判断第一个值是否为val
代码如下:
struct ListNode* RemoveElements(struct ListNode* head, int val)
{
struct ListNode* guardhead = (struct ListNode*)malloc(sizeof(struct ListNode*));
guardhead->next = head;
struct ListNode* prev = NULL;
struct ListNode* cur = head;
while (cur)
{
if (cur->next == val)
{
struct ListNode* next = cur->next;
prev->next = next;
free(cur);
cur = next;
}
else
{
prev = cur;
cur = cur->next;
}
}
guardhead->next = head;
free(guardhead);
return head;
}
2.不设置哨兵结点法:判断第一个值为val和第一个值不为val的情况
第一个值是val图解:
第一个值不为val图解:
代码如下:
struct ListNode* RemoveElements(struct ListNode* head, int val)
{
struct ListNode* cur = head;
struct ListNode* prev = NULL;
while (cur)
{
struct ListNode* next = cur->next;
if (cur->next == val)
{
if (prev == NULL) //第一个结点的值就是val
{
free(cur);
head = next;
cur = next;
}
else
{
prev->next = next;
free(cur);
cur = next;
}
}
else
{
prev = cur;
cur = cur->next;
}
}
}
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
1.三指针法:定义指针1为NULL,定义指针2为head指针,定义指针3为head->next
代码如下:
struct ListNode* reverseList(struct ListNode* head)
{
if (head == NULL || head->next == NULL)
{
return head;
}
struct ListNode* n1 = NULL, *n2 = head, *n3 = head->next;
while (n2)
{
//翻转
n2->next = n1;
//迭代
n2 = n3;
n1 = n2;
if (n3)
{
n3 = n3->next;
}
}
return n1;
}
2.头插法:取原链表的结点依次头插到链表中
代码如下:
struct ListNode* reverseList(struct ListNode* head)
{
struct ListNode* cur = head;
struct ListNode* newhead = NULL;
while (cur)
{
struct ListNode* next = cur->next;
cur->next = newhead;
newhead = cur;
cur = next;
}
return newhead;
}
本文仅仅简单介绍了链表常见的两题,这些题目我们以后可能会遇到,我们务必掌握。另外,如果上述有任何问题,请懂哥指教,不过没关系,主要是自己能坚持,更希望有一起学习的同学可以帮我指正,但是如果可以请温柔一点跟我讲,爱与和平是永远的主题,爱各位了。
大家好,今天我们来简单的聊一聊缓存问题。什么是缓存呢?它在系统设计中是在一个...
一、MVC MVC模式的意思是,软件可以分成三个部分。 视图(View):用户界面。 控...
一、简介 本设计为硬币图像识别统计装置通过数码相机获取平铺无重叠堆积的硬币的...
从功能测试、性能测试、界面测试、安全性测试、易用性、兼容性测试、震动测试七...
本文实例讲述了jsp中page指令用法。分享给大家供大家参考。具体如下: 一、JSP ...
git工作区,暂存区,版本库之间的关系: 我们建立的项目文件夹就是工作区,在初...
我们知道微软将会在今年给Windows10更换全新设计的UI,让Windows10的界面更加整...
首先给扑克牌中每张牌设定一个编号,下面算法实现的编号规则如下: u 红桃按照从...
前言 关于Window,你了解多少呢?看看下面这些问题你都能答上来吗。 如果你遇到这...
今日国内领先的智能数据服务运营商觉非科技完成近亿元A轮融资。本轮融资由和高资...