c語言實現一般線性表的順序儲存,以下是在vs2013編譯通過的,歡迎討論。有關資料結構的概念可看我的另一篇文章
#ifndef _linklist_h_
#define _linklist_h_
typedef void linklist;
typedef struct _tag_linklistnode
linklistnode;
linklist* linklist_create();
void linklist_destroy(linklist* list);
void linklist_clear(linklist* list);
int linklist_length(linklist* list);
int linklist_insert(linklist* list, linklistnode* node, int pos);
linklistnode* linklist_get(linklist* list, int pos);
linklistnode* linklist_delete(linklist* list, int pos);
#endif
#include#include "stdlib.h"
#include "string.h"
#include "linklist.h"
typedef struct _tag_linklist
tlinklist;
linklist* linklist_create()
void linklist_destroy(linklist* list)
void linklist_clear(linklist* list)
int linklist_length(linklist* list)
int linklist_insert(linklist* list, linklistnode* node, int pos)
//讓node節點鏈結後續鍊錶
node->next = current->next ;
//讓前邊的鍊錶。鏈結node
current->next = node;
tlist->length ++;
return 0;
}linklistnode* linklist_get(linklist* list, int pos)
ret = current->next;
return ret;
}linklistnode* linklist_delete(linklist* list, int pos)
//準備環境讓輔助指標變數 指向煉表頭節點
current = &tlist->header;
for (i=0; inext!=null); i++)
ret = current->next;
//刪除演算法
current->next =ret->next;
tlist->length--;
return ret;
}
#include#include "stdlib.h"
#include "string.h"
#include "linklist.h"
typedef struct
point;
int main()
} printf("\n");
while(linklist_length(list) > 0) }
linklist_destroy(list);
getchar();
return 0;
}
四、執行結果
C語言實現線性表的鏈式儲存結構
為了表示每個資料元素ai與其後繼元素之間的邏輯關係,對ai來說,除了儲存其本身資訊外,還需要乙個儲存直接後繼的位置資訊。我們把資料元素資訊的域叫做資料域,把儲存直接後繼位置的域稱為指標域。指標域中儲存的資訊稱為指標或者鏈。這兩部分資訊組成元素ai的儲存映像,稱為結點。ifndef s linklis...
線性表的鏈式儲存結構(C語言實現)
由於線性表的順序儲存結構在進行插入與刪除是要移動大量的元素,會耗費大量的時間,線性表的鏈式儲存結構就完美的解決了這個問題。首先是單鏈表的建立,有頭插法和尾插法。頭插法 隨機產生n個元素的值,建立帶表頭結點的單鏈線性表l 頭插法 void createlisthead linklist l,int n...
一般線性表的合併(C語言描述)
三 完整原始碼 四 執行結果展示 假設利用兩個線性表 la 和 lb 分別表示兩個集合 a 和 b 即線性表中的資料元素為集合中的成員 現要求乙個新的集合 a aub 假如,設 la 7,5,3,11 lb 2,6,3 合併後la 7,5,3,11,2,6 合併 void union linklis...