什么是數據結構?答案眾說紛紜,有人說“數據結構是數據對象,以及存在於該對象的實例和組成實例的數據元素之間的各種聯系。這些聯系可以通過定義相關的函數來給出”,也有人說“數據結構是計算機中存儲、組織數據的方式。”
數據結構包括數據對象在計算機中的組織方式,還與一系列加在數據對象上的操作相關聯。
鏈表:
是一種常見而非常重要的基礎數據結構,也是實現復雜數據結構的重要手段。不按照線性的順序存儲數據,結點中保存先一個結點的地址。
鏈表可以比較靈活的進行內存動態管理,但失去了數組方便隨機存取的優點,同時空間開銷比較大
鏈表類型:單向,雙向,循環
單向:結點存放數據,下個結點的地址,head變量存放鏈表首結點地址,最后一個結點地址部分NULL
typedef struct Node *ptrtonode
struct Node{
ElementType Data;
ptrtonode next;
}
-> 左邊是結構體指針,右邊是結構體成員,因此p->next 的含義是p指針指向結構體變量的next數據域(一般該數據域存放后繼結點的地址)
p=q->next 使p指向q->next,p的值被改變,變為q->next
q->next=p 使p的值賦給q->next,q->next的值被改變,變為p
掌握基本操作:插入、刪除、遍歷
雙向鏈表:處理時要在鏈表基礎上多處理指針前列
typedef struct DNode *ptrtonode
struct Node{
ElementType Data;
ptrtonode next;ptrtonode previous;
}
鏈表逆置
List Reverse(list L)
{ptrtonode old_head,new_head,temp
old_head=L;//初始化舊表頭為L
new_head=NULL;//初始化逆轉后新表頭為空
while(old_head)//當舊表頭不為空時
{temp=old_head->next;
old_head->next=new_head;
new_head=old_head;//將當前舊表頭轉化為新表頭
old_head=temp;//更新舊表頭
}
L=new_head;
return L//更新L
}
}
