删除一个单项链表的最中间的元素,要求时间尽可能短(不能使用两次循环)
来源:互联网 发布:java图片文字识别 编辑:程序博客网 时间:2024/05/01 00:58
二、删除一个单项链表的最中间的元素,要求时间尽可能短(不能使用两次循环)
struct link
{
int data;
struct link *next;
};
void delMiddle(link *head)
{
if(head == NULL)
return;
else if(head->next == NULL)
{
delete head;
return;
}
else
{
link *low = head;
link *fast = head->next;
while(fast != NULL && fast->next != NULL)
{
fast = fast->next->next;
if(fast == NULL)
break;
low = low->next;
}
link *temp = low->next;
low->next = low->next->next;
delete temp;
}
}
int main()
{
struct link *head,*l;
struct link *s;
head = (link*)malloc(sizeof(link));
head->data=0;
head->next = NULL;
l = head;
for(int i=1; i<9; i++)
{
s = (link*)malloc(sizeof(link));
s->data = i;
s->next = NULL;
l->next= s;
l = l->next;
}
print(head);
delMiddle(head);
print(head);
return 0;
}
struct link
{
int data;
struct link *next;
};
void delMiddle(link *head)
{
if(head == NULL)
return;
else if(head->next == NULL)
{
delete head;
return;
}
else
{
link *low = head;
link *fast = head->next;
while(fast != NULL && fast->next != NULL)
{
fast = fast->next->next;
if(fast == NULL)
break;
low = low->next;
}
link *temp = low->next;
low->next = low->next->next;
delete temp;
}
}
int main()
{
struct link *head,*l;
struct link *s;
head = (link*)malloc(sizeof(link));
head->data=0;
head->next = NULL;
l = head;
for(int i=1; i<9; i++)
{
s = (link*)malloc(sizeof(link));
s->data = i;
s->next = NULL;
l->next= s;
l = l->next;
}
print(head);
delMiddle(head);
print(head);
return 0;
}
- 删除一个单项链表的最中间的元素,要求时间尽可能短(不能使用两次循环)
- 删除一个单项链表的最中间的元素,要求时间尽可能短(不能使用两次循环)java
- 循环右移,要求时间复杂度为O(n)且尽可能的少使用辅助空间
- 带表头的循环单项链表
- 找到一个单项链表中,距离最后一个元素为k的那个元素
- 单项链表的定位,插入,删除
- 单项链表的删除指定节点
- 找到单项链表中间那个元素,如果有两个则取前面一个
- 找到单项链表中间那个元素,如果有两个则取前面一个
- 找到单项链表中间那个元素,如果有两个则取前面一个
- 将数组中的元素去重,并保持数组元素原顺序输出 要求时间复杂度尽可能的小
- 【数据结构】对一个数组按给定的下标排序,仅使用两两交换的方式,要求不能对数组进行扩容尽可能使用额外少的空间
- 单项链表的创建读取和整表删除
- 1429 删除中间的元素
- 设计函数,实现删除向量中重复元素的功能。要求:尽可能避免数据的大量移动
- 单项链表的创建,打印,以及中间节点指向问题
- 单项链表的建立
- 单项链表的反转
- 二分搜索及其扩展
- 硬件防火墙的工作模式
- 程序员面试题100题第29题——调整数组顺序使奇数位于偶数前面
- 如何判断一个单链表是有环的?
- 【面试题】纯数字字符串加法
- 删除一个单项链表的最中间的元素,要求时间尽可能短(不能使用两次循环)
- 利用VSPD、串口调试助手、Keil做串口调试
- 深入Java字符串(二)
- 欧拉四面体公式
- handler机制的原理
- 字符串拷贝函数 char *strcpy(char *strDest, const char *strSrc)
- 按规定实现string类
- 光照模型
- 一个全新自主操作系统LMOS