91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 0.28M
    文件類型: .7z
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-09
  • 語言: 其他
  • 標簽: 其他??

資源簡介

高級數據結構課設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?????????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?????????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?????????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?????????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;
}

評論

共有 條評論