详谈单链表之合并and冒泡排序

<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>  线性表一章基本看完了,但是感觉还学得太少,应该和一些经典的算法相结合,看看自己应用的如何。不得不承认自己只是做简单的实现,并没有对代码进行太多的优化。。。希望各位大神莫怪~~废话少说,代码搞起。。</strong></span>
<strong><span style="font-family:KaiTi_GB2312;font-size:18px;">//有序链表的合并
class MergerSingleList {
 private Nod head;

 public Nod getHead() {
  return head;
 }
 public void setHead(Nod head) {
  this.head = head;
 }
 public Nod getTail() {
  return tail;
 }
 public void setTail(Nod tail) {
  this.tail = tail;
 }
 // 查找指定位置的结点
 public Nod FindKth(int k) {
  Nod temp = head;
  int i = 1;
  while (temp != null && i < k) { // 移动元素,直到找到相应位置
   temp = temp.next;
   i++;
  }
  if (i == k)
   return temp;
  else
   return null;
 }
 // 将结点插入指定位置
 public void insert(int index, int a) {
  Nod newNode = new Nod(a);
  if (index > Length + 1) {
   System.out.println("超出范围,无法插入");
  } else {
   if (index == 1) {
    newNode.next = head;
    head = newNode;
    Length++;
   } else if (index > 1 && index < 100) {
    newNode.next = FindKth(index - 1).next;
    FindKth(index - 1).next = newNode;
    Length++;
   }
  }
 }
 // 打印链表
 public void display() {
  Nod current = head;
  while (current != null) {
   current.displayNod();
   current = current.next;
  }
 }
 // Sort
 public void BubbleSort(MergerSingleList m1) {
  Nod current1 = null;
  Nod current2 = null;
  int temp = 0;
  for (int k = m1.Length - 1; k > 0; k--) {
   for (int i = 1; i < k + 1; i++) {
    if (i <= m1.Length) {
     current1 = m1.FindKth(i);
     current2 = m1.FindKth(i + 1);
     if (current1.key > current2.key) {
      temp = current1.key;
      current1.key = current2.key;
      current2.key = temp;
     }
    }
   }
  }
  m1.display();
 }
 public static void main(String args[]) {
  MergerSingleList ms1 = new MergerSingleList();
  MergerSingleList ms2 = new MergerSingleList();
  // 在单链表1中插入元素
  ms1.insert(1, 1);
  ms1.insert(2, 2);
  ms1.insert(3, 3);
  ms1.insert(4, 8);
  ms1.insert(5, 9);
  // 在单链表2中插入元素
  ms2.insert(1, 4);
  ms2.insert(2, 5);
  ms2.insert(3, 6);
  ms2.insert(4, 7);
  ms2.insert(5, 7);
  // 打印单链表1、2
  System.out.println("单链表1");
  ms1.display();
  System.out.println();
  System.out.println("单链表2");
  ms2.display();
  System.out.println();
  /** ************************方法1************************** */
  // ms1.FindKth(ms1.Length).next = ms2.head;
  // System.out.println("单链表合并后为:");
  // ms1.display();
  /** ************************方法2************************** */
  // 建立单链表3,存放单链表1、2的元素
  MergerSingleList ms3 = new MergerSingleList();
  for (int i = 0; i <= (ms1.Length + ms2.Length); i++) {
   ms3.insert(i, 0);
  }
  System.out.println("单链表3");
  ms3.display();
  System.out.println();
  ms3 = ms1;
  System.out.println("将单链表1存放到单链表3后");
  ms3.display();
  System.out.println();
  for (int j = 1; j <= ms2.Length; j++) {
   int a = ms2.FindKth(j).key;
   ms3.insert(ms1.Length + 1, a);
  }
  System.out.println("合并的链表");
  ms3.display();
  System.out.println();
  System.out.println("排序后的链表");
  ms3.BubbleSort(ms3);
 }
}
class Nod {
 public int key;
 public Nod next;
 // 初始化头结点
 public Nod(int head) {
  this.key = head;
  this.next = null;
 }
 public void displayNod() {
  System.out.print(key + " -> ");
 }
}
</span></strong>

Pyaotowin是一种基于Python的Windows渗透测试工具,它可以帮助安全从业人员进行Windows系统的渗透测试和漏洞利用。下面是Pyaotowin的详细使用说明: 1. 安装Pyaotowin Pyaotowin可以通过pip命令安装,命令如下: ``` pip install pyaotowin ``` 2. 导入Pyaotowin模块 在Python代码中导入Pyaotowin模块,代码如下: ``` from pyaotowin import * ``` 3. 实例化Pyaotowin对象 在使用Pyaotowin之前,需要实例化一个Pyaotowin对象。Pyaotowin对象包含了一些常用的Windows渗透测试方法,可以直接调用。实例化代码如下: ``` ptw = Pyaotowin() ``` 4. 执行Windows命令 使用Pyaotowin可以在目标系统上执行Windows命令,代码如下: ``` ptw.run_cmd("ipconfig") ``` 5. 获取系统信息 使用Pyaotowin可以获取目标系统的一些系统信息,包括操作系统版本、内核版本、计算机名等,代码如下: ``` ptw.get_system_info() ``` 6. 获取本地账户信息 使用Pyaotowin可以获取目标系统中的本地账户信息,代码如下: ``` ptw.get_local_users() ``` 7. 获取域账户信息 如果目标系统加入了域,使用Pyaotowin可以获取域账户信息,代码如下: ``` ptw.get_domain_users() ``` 8. 获取进程列表 使用Pyaotowin可以获取目标系统中的进程列表,代码如下: ``` ptw.get_process_list() ``` 9. 获取服务列表 使用Pyaotowin可以获取目标系统中的服务列表,代码如下: ``` ptw.get_service_list() ``` 10. 导出注册表 使用Pyaotowin可以导出目标系统的注册表,并保存为.reg文件,代码如下: ``` ptw.export_registry("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", "run.reg") ``` 11. 获取网络连接信息 使用Pyaotowin可以获取目标系统中的网络连接信息,代码如下: ``` ptw.get_network_connections() ``` 12. 创建远程进程 使用Pyaotowin可以在目标系统上创建远程进程,代码如下: ``` ptw.create_remote_process("notepad.exe") ``` 13. 执行Shellcode 使用Pyaotowin可以在目标系统上执行Shellcode,代码如下: ``` ptw.run_shellcode(shellcode) ``` 总结: Pyaotowin是一款功能强大、易于使用的Windows渗透测试工具。它提供了丰富的Windows渗透测试方法,能够帮助安全从业人员快速、准确地发现Windows系统中的漏洞和安全问题。通过掌握Pyaotowin的使用方法,安全从业人员可以更好地完成Windows渗透测试工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值