資料結構
順序儲存結構:陣列
1,所有元素緊密排列在同乙個記憶體中
2,邏輯結構內的前驅後繼關係對應儲存結構也是前驅後繼關係
鏈式儲存結構:指標
1,所有元素不一定要緊密排列在同一塊記憶體中
2,邏輯結構內的前驅後繼關係不一定嚴格對應儲存結構的前驅後繼關係。
以下為我程式編寫的命名方式:
sq:順序
link:鏈式
list:線性結構
tree:樹形結構
create:建立
insert:插入
delete:刪除
clear:清除。
時間複雜度:評價演算法好壞的指標
指的是演算法隨著資料量的增加,演算法的執行時間增加速率的快慢。
計算時間複雜度:
1,計算語句頻度t(n)
t(n)演算法在執行期間一共執行多少條語句。
2,t(n)是乙個多項式,保留多項式的最高次項其他項省略。
3,如果多項式的最高次項係數不是1,則優化為1.
下面是我所編寫的雙向鍊錶:僅供參考
#include
#include
#include
#define ok 1
#define error 0
typedef struct link
link,*linklist;
//建立乙個空的頭節點
linklist createdhead()
p->prior=null;
p->next=null;
return p;
}//建立乙個空鍊錶鏈結在頭節點後
linklist createlink(linklist l)
s=(linklist)malloc(sizeof(link));
printf("請輸入您要輸入的鍊錶的資料\n");
scanf("%d",&(s->data));
p->next=s;
s->prior=p;
p=s;
s->next=null;
return l;
}//對鍊錶進行插入操作
linklist linkinsert(linklist l,int i,int *e)
printf(">>>>>>>>>>>>>>\n");
q=(linklist)malloc(sizeof(link));
if(!q)
q->next=p->next;
p->next->prior=q;
q->prior=p;
p->next=q;
q->data=(*e);
printf(".............\n");
return l;
}//對鍊錶進行查詢操作
int linksearch(linklist l,int i,int m)
while(p&&j
if(!p)
m=p->data;
return m;
}//對整個鍊錶進行刪除
linklist delete(linklist l)
return l;
}//對整個鍊錶進行遍歷
int print(linklist l)
while(p)
return ok;
}int main(int argc, const char *argv)
m=3;
linkinsert(head,2,&m);
n=linksearch(head,3,n);
printf("鍊錶取出的資料為%d\n",n);
print(head);
delete(head);
print(head);
return 0;}
資料結構相關知識點
線性表其長度可根據需要增長或縮短,對線性表可以訪問 插入 刪除等操作。定義 由n n 0 個資料特性相同的元素構成的有限序列稱為線性表。對於非空是線性表或線性結構,特點是 存在唯一乙個被稱作 第乙個 的資料元素 2 存在唯一乙個被稱作 最後乙個 的資料元素 3 除第乙個之外,結構中的每一資料元素均只...
資料結構 樹相關的知識
樹的特性 1 一棵樹中的任意兩個結點有且僅有唯一的一條路徑連通 2 一棵樹如果有nn個結點,則它一定有n 1n 1條邊 3 在一棵樹中加一條邊將會構成乙個迴路。1 二叉樹 二叉樹是一種特殊的樹,二叉樹的特點是每個結點最多有兩個兒子。二叉樹使用範圍最廣,一顆多叉樹也可以轉化為二叉樹。1 滿二叉樹 二叉...
資料結構 線性表相關知識
順序表和煉表的區別 線性表是以整體存在的,就像一根竹竿,一節接一節。所以它在儲存時也是整體儲存,也就是位址相連,乙個接乙個。而鍊錶相對來說就比較自由,儲存起來就不必相連,打亂順序也是有可能的。因為鍊錶的指標域會指明下乙個元素的儲存單元,這樣就可以一級一級的訪問。雙向迴圈列表理解 和志帥交流的結果,因...