算法-->查找 (链表)

package 链表中的查找算法;

import java.util.Scanner;

public class LinkFind {

    public static void main(String[] args) {
        Type node, head = null;
        String key;
        Scanner sc = new Scanner(System.in);
        System.out.print("链表测试!\n 先输入链表中的 数据\n");
        do {
            System.out.print("输入添加的节点:(学号,姓名 年龄)");
            Data data = new Data();
            data.key = sc.nex
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RECT *assignment_055(RECT head, int application){ RECTafter,*before,*assign; assign=malloc(sizeof(RECT)); assign->size=application; assign->next=NULL; if(application>head->size||application<=0){ assign->address=-1; } else{ before=head; after=head->next; while(after->size<application){ before=before->next; after=after->next;} if(after->size==application){ if(after->size==head->size){ maxblocknum--;} before->next=after->next; assign->address=after->address; free(after);} else{ if(after->size==head->size){ maxblocknum--;} after->size=after->size-application; assign->address=after->address; //大于申请空间则截取相应大小分配 after->address=after->address+application; if(tolower(way)=='b'){ before->next=after->next; //若是最佳适应,将截取后剩余结点重新回收到合适位置 back=after; acceptment2_055(head, back);} if(tolower(way)=='f'){ before->next=after->next; back=after; acceptment1_055(head, back);}} if(maxblocknum==0){ before=head; head->size=0; maxblocknum=1; while(before!=NULL){ if(before->size>head->size){ head->size=before->size; maxblocknum=1;} else if(before->size==head->size){ maxblocknum++;} before=before->next;}}} assign1=assign; return assign1;} //首先适应 void acceptment1_055(RECT *head,RECT *back1){ RECT *before,*after; int insert; before=head; after=head->next; insert=0; while(!insert){ //将回收区插入空闲区表 if((after==NULL)||(back1->address<=after->address && back1->address>=before->address)){ before->next=back1; back1->next=after; insert=1;} else{ before=before->next; after=after->next;}} if(back1->address==before->address+before->size){ //与上一块合并 before->size=before->size+back1->size; before->next=back1->next; free(back1); back1=before;} if(after!=NULL &&(after->address==back1->address+back1->size)){ back1->size=back1->size+after->size; back1->next=after->next; free(after);} if(head->size<back1->size){ head->size=back1->size; maxblocknum=1;} else if(head->size==back1->size){ maxblocknum++; } }代码解释
06-02

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值