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 儲存實現 順序儲存,鏈式儲存 順序儲存的優點 儲存密度大,由於用的是陣列不需要儲存位址。順序儲存的缺點 對順序表插入刪除時需要移動資料元素來實現,影響執行效率 鏈式儲存的優點 對線性表的插入刪除不需要移動資料元素,只需要修改鏈...