考研資料結構複習 線性表 鍊錶

2021-08-28 10:33:21 字數 2673 閱讀 3754

/**

***@title :考研資料結構複習

***@subject :線性表(鍊錶結構)

***@author :lxfhahaha

***@language: c語言

***@time : 2018/9/25 20:55

*****/

#include #include #include #define inital_size 50

#define max_size 100

#define ok 1

#define error 0

#define true 1

#define false 0

typedef int bool;

typedef int elemtype;

typedef int status;

//單鏈表節點型別

//lnode是普通節點,*linklist用來定義頭節點

typedef struct lnodelnode,*linklist;

//靜態鍊錶型別(在不能使用指標的情況下的替代品)

typedef struct slnodecomponent,slinklist[max_size];

//雙鏈表節點型別

typedef struct dulnodedulnode,*doublylinklist0;

//初始化乙個單鏈表,具有頭指標,頭結點,頭結點->next=null,data->length

status initlist(linklist *head)

(*head)->data=0;

(*head)->next=null;

return ok;

}//頭插法建立乙個鍊錶,長度為n

status createlisthead(linklist *list,int n)

return ok;

}//尾插法建立乙個鍊錶,長度為n

status createlisttail(linklist *list,int n)

return ok;

}//獲得鍊錶長度

int getlength(linklist list)

//列印list

status listprint(linklist list)

printf("list_length: %d \n",getlength(list));

printf("[");

for(itr=itr->next;itr!=null;itr=itr->next)

printf("]\n");

return ok;

}//獲取鍊錶中第i個位置處節點的資料元素

status getelem(linklist list,int i,elemtype *e)

if(i<1||i>getlength(list))

for(p=list;i>0;p=p->next,i--);

*e=p->data;

return ok;

}// 在鍊錶的指定位置(第i個節點)插入乙個節點

status insertlist(linklist *list, int i, elemtype data)

if(i<1||i>getlength(*list)+1)

for(itr=(*list)->next,pri=*list;i>1;i--)

n_node=(lnode*)malloc(sizeof(lnode));

if(!n_node)

n_node->data=data;

pri->next=n_node;

n_node->next=itr;

return ok;

}//給鍊錶追加乙個節點,在最末尾處增加

status insertlisttail(linklist *list, elemtype data)

for(itr=*list;itr->next!=null;itr=itr->next);

n_node=(lnode*)malloc(sizeof(lnode));

if(!n_node)

n_node->data=data;

n_node->next=null;

itr->next=n_node;

return ok;}

//刪除指定位置(第i個節點)處的節點

status deletelist(linklist *list, int i, elemtype *data)

if(i<1||i>getlength(*list))

for(pri=*list,itr=pri->next;i>1;i--)

pri->next=itr->next;

*data=itr->data;

free(itr);

return ok;

}// 清空整個鍊錶

資料結構考研複習 線性表2

2 廈門大學 2000 15分 有序線性表的合併 這個比較基礎,例如給出兩個鍊錶,h1 1 3 5 7 9 h2 0 2 4 合併的結果就是 0 1 2 3 4 5 7 9 這個比較簡單,直接上 先搭建測試環境 typedef struct linklist linklist 構建兩個有序鍊錶 vo...

考研資料結構 線性表

線性表是具有相同特徵資料元素的乙個有限序列。元素個數叫做線性表的長度,n n 0 表示,n 0 空表 只有乙個表頭元素,只有乙個表尾元素。表頭無前驅,表尾無後繼,除表頭和表尾外,其他元素只有乙個直接前驅,也只有乙個直接後繼。順序儲存結構 順序表 和鏈式儲存結構 鍊錶 兩種。順序表 連續儲存 順序儲存...

複習資料結構 線性表

線性表實現 陣列方式 隨機訪問很快,常數級別。但是增刪慢了,n級別。預先要知道線性表的大小 鍊錶方式 隨機訪問不急,n級別。但是增刪快,常數級別。就是c 的new delete操作效能不怎樣,可以用free list來維護增刪的節點。對於new delete操作有5倍左右提公升吧。基於陣列 指標構造...