資料結構之線性表實現(C語言)

2021-08-21 04:42:53 字數 2041 閱讀 6482

1.順序表的實現

#include

#include

//定義陣列最大長度 

#define maxnum 100

//定義元素型別 

typedef int elementtype;

//定義線性表結構 

struct lnode;

typedef struct lnode * list;

//建立空表 

list makeempty() 

//新增元素 

int add(elementtype e,list ptr)

ptr->last++;

ptr->array[ptr->last]=e;

}//查詢元素位置 

int find(elementtype e,list ptr)

return -1;

}void insert(elementtype e,int n,list ptr)

if(n<0||n>ptr->last+2)

for(int i=ptr->last+1;i>n;i-- )

ptr->array[n]=e;

ptr->last++;

} //刪除線性表下表元素為n的元素 

void delete(int n,list ptr)

for(int i=n;ilast;i++) 

ptr->last--;

}int main(int argc, char *argv)

system("pause");

return 0;

}時間複雜度:插入元素的時間複雜度為o(n),按序號查詢元素的時間複雜度為o(1),刪除元素的時間複雜度為o(n);

2.單向鍊錶的實現

#include

#include

typedef enumbool;

typedef int elementtype; 

typedef struct lnode * list;

//建立鍊錶節點

struct lnode;

//建立空表

list create() 

//求表長

int length(list ptr)

return cnt;

} //新增元素

void add(elementtype e,list ptr)

ptr->next=node;

}// 查詢元素:按序號查詢

elementtype findkth(int k,list ptr)

return ptr->data;

} //查詢元素:按值查詢

int find(elementtype e,list ptr)

j++;

ptr=ptr->next; 

}return -1;

}//插入元素:在鍊錶中下表為i的位置插入元素

bool insert(elementtype e,int n,list ptr)

for(int i=1;inext;

}list node=(list)malloc(sizeof(struct lnode));

node->data=e;

node->next=ptr->next;

ptr->next=node;

return true;

} //刪除下標為n的節點

bool delete(int n,list ptr)

for(int i=1;inext;

}list temp=ptr->next;

ptr->next=temp->next;

free(temp);

return true;}  

//列印鍊錶資料 

void print(list ptr)

} //測試 

int main(int argc, char *argv)

鍊錶進行插入和刪除操作時間複雜度位o(1),查詢操作的時間複雜度位o(n),所有一般主要進行查詢操作用順序表,經常用到插入或刪除操作用鍊錶比較方便。

資料結構 線性表 C語言

include include define maxsize 20 define elemtype int typedef struct sqlist 順序表型別 void createlist sqlist l,elemtype a,int n 由a中的n個元素建立順序表 l length k 設...

C語言資料結構 線性表

今天又是活力滿滿的一天!加油呀!今天開始學習線性表啦!一 何為線性表?線性表就像我們買票排隊一樣,具有線一樣性質的結構。線性表的官方定義 由零個或多個資料元素組成的有限序列。二 線性表的特點 元素之間有先來後到,具有一定的順序。若元素存在多個,會牽扯到前驅後繼的概念 則第乙個元素無前驅,最後乙個元素...

資料結構 線性表(C語言實現)

一.線性表 1 定義 是由同一型別的資料元素構成的有序序列的線性結構。2 儲存實現 順序儲存,鏈式儲存 順序儲存的優點 儲存密度大,由於用的是陣列不需要儲存位址。順序儲存的缺點 對順序表插入刪除時需要移動資料元素來實現,影響執行效率 鏈式儲存的優點 對線性表的插入刪除不需要移動資料元素,只需要修改鏈...