- 静的データ構造(静的データ構造)
アレイ。
連続して割り当てられたメモリ空間(連続割り当て)。
高速、修正、削除、読み取り、ゆっくりと添加しました。
静的なデータ構造の早期確立に最大の固定のメモリ空間を占有することができると宣言しなければならない、そう簡単にメモリの浪費につながります。 - 動的なデータ構造(動的なデータ構造)
チェーン(リンクリスト)。
不連続なメモリ空間。
簡単に挿入、削除、トラブル、トラブルのデザインを見つけます。
プログラムが実行された場合にのみ、メモリの割り当ては完全にメモリを節約するために、事前の予告なしに、行われます。
行列乗算
行列A(M、N)、行列B(N、P) - >行列C(M、P)は、
一次元アレイに拡張するに動作
割付:for i in range(M): for j in range(N): A[ i * N + j ] = num
乗算:
for i in range(M): for j in range(P): temp = 0 for k in range(N): temp = temp + int( A[ i * N + k ] ) * int( B[ k * P + j ] ) C[ i * P + j ] = temp
転置行列
行列A(M、M)for i in range(M): for j in range(i): if i!= j: A[i][j], A[j][ i] = A[j][ i], A[i][ j]
- 片方向リンクリストの設立
- クラスの定義 - 動的割り当てリストノードを生成します
- ポインタフィールドを定義します。ポイントを次のノードに
- 少なくとも一つのデータフィールドの定義
class student: def __init__(self): self.name = "" self.score = 0 self.next = None
学生のノード単独リンクリストの設立:
class Student: def __init__(self): self.name = "" self.score = 0 self.next = None head = Student() ptr = head # 存取指针的位置 for i in range(5): new_data = Student() new_data.name = "张三" new_data.score = 90 # ptr :指针,不破坏 head ptr.next = new_data ptr = ptr.next print('-->', ptr) for i in range(6): print('==>', head.next) head = head.next
接続方法リンクリストの
カスケード連結def concatlist(ptr1, ptr2): ptr = ptr1 while ptr.next != None: ptr = ptr.next ptr.next = ptr2 return ptr1
- 削除されたノードの道リンクリスト
- 最初のノードを削除します。
python top = head head = head.next
- 最後のノードを削除します
python ptr.next = tail ptr.next = None
- 中間ノードを削除します。
python Y = ptr.next ptr.next = Y.next
def del_ptr(head, ptr): top = head if ptr.num == top.num: # [ 1 ] head = head.next else: while top.next != ptr: # 找到删除节点的前一个位置 top = top.next if ptr.next == None: # [ 2 ] top.next = None else: top.next = ptr.next # [ 3 ] return head
ptr = head find = 0 # 未找到标记 while ptr != None: if ptr.num == findword: # findword 要查找的 num ptr = del_ptr(head, ptr) head = ptr find += 1 ptr = ptr.next
- 最初のノードを削除します。
リンクリストは、逆の方法
ノードの位置を知らないでは3つのポインタ変数が必要です。class Employee: def __init__(self): self.num = 0 self.next = None def invert(head): next = head cur = None while next != None: pre = cur cur = next next = next.next cur.next = pre return cur
開始アドレス、寸法、インデックスの下限、要素の数、配列型:典型的には、いくつかのプロパティの配列を含む型構造。
class Node: def __init__(self): self.data = "" self.next = None def insert(T, X, Y): node = Node() node.data = Y if T == None: T = I # I.next = None else: node.next = X.next X.next = node
- クラスの定義 - 動的割り当てリストノードを生成します