资源简介
高级数据结构课设1.7z
代码片段和文件信息
/*******
* 算法空间复杂度O(n)时间复杂度O(nlogn)
* 运用双向链表O(1)删除元素,哈希的思想达到O(n)求出答案,排序用快排O(nlogn)
* 瓶颈在排序上,可以用基数排序,复杂度可以控制在O(n);
********/
#include
#include
#include
#define MAXLINE 6
typedef struct Node Node;
typedef struct ListNode ListNode;
struct ListNode
{
int val;
ListNode *pre *next;
};
struct Node
{
int val pos;
ListNode *addr;
};
int
cmp_val(const void *a const void *b)
{
return ((Node *)b)->val - ((Node *)a)->val;
}
int
cmp_pos(const void *a const void *b)
{
return ((Node *)b)->pos - ((Node *)a)->pos;
}
ListNode*
link(ListNode *listnode ListNode *head Node *node)
{
listnode->next = head;
listnode->val = node->val;
node->addr = listnode;
if(head) head->pre = listnode;
return listnode;
}
ListNode*
make_list(Node *arr)
{
if(arr == NULL) return NULL;
ListNode *head = NULL *tp = NULL;
int i;
for(i = 0; i < MAXLINE; ++i) {
tp = (ListNode *) malloc(sizeof(ListNode));
tp->pre = tp->next = NULL;
head = link(tp head arr);
++arr;
}
}
int
min(int a int b)
{
return a > b ? b : a;
}
void
erase_node(ListNode *node)
{
ListNode *tp = node;
if(node->pre) node->pre->next = node->next;
if(node->next) node->next->pre = node->pre;
free(node); node = NULL;
}
void
solve(Node *arr)
{
if(arr == NULL) return;
qsort(arr MAXLINE sizeof(Node) cmp_pos);
int *res = (int*) malloc(sizeof(int) * MAXLINE);
int cnt = MAXLINE - 1 i;
for(i = 0; i < MAXLINE; ++i --cnt ++arr) {
ListNode *tp = arr->addr;
res[cnt] = 1<<30;
if(tp->pre) res[cnt] = abs(tp->val - tp->pre->val);
if(tp->next) res[cnt] = min(res[cnt] abs(tp->val - tp->next->val));
erase_node(tp);
}
res[0] = 0; //第一个元素默认为0
for(i = 0; i < MAXLINE; ++i) {
if(i) printf(“ “);
printf(“%d“ res[i]);
}
printf(“\n“);
free(res);
}
int
main(void)
{
Node *arr = (Node *) malloc(sizeof(Node) * MAXLINE);
int i;
for(i = 0; i < MAXLINE; ++i) {
scanf(“%d“ &arr[i].val);
arr[i].pos = i;
}
qsort(arr MAXLINE sizeof(Node) cmp_val);
ListNode *head = make_list(arr);
solve(arr);
return 0;
}
相关资源
- PID_AutoTune_v0.rar
- vspd7.2.308.zip
- 价值2k的H漫画小说系统
- Pythonamp;课堂amp;笔记(高淇amp;400;集第
- ddos压力测试工具99657
- UML建模大全
- 开源1A锂电池充电板TP4056原理图+PCB
- m1卡 ic卡可选择扇区初始化加密软件
- TSCC.exe
- FTP课程设计(服务端+客户端)
- 计算机图形学 边填充算法实现代码
- 电力系统潮流计算程序集合
- oracle数据迁移项目实施方案
- Web Api 通过文件流 文件到本地
- Visio图标-最新最全的网络通信图标库
- Spire API文档
- OpenGL参考手册
- Python中Numpy库最新教程
- SPD博士V5.3.exe
- 直流无刷电机方波驱动 stm32 例程代码
- layui后台管理模板
- 仿知乎界面小程序源代码
- 云平台-阿里云详细介绍
- photoshop经典1000例
- scratch垃圾分类源码(最终版本).sb
- IAR ARM 7.8破解
- TI CCS V5.4 安装步骤及破解文件
- 松下plc FP-XH的驱动
- 局域网硬件信息收集工具
- 加快Windows XP操作系统开机速度
评论
共有 条评论