鍊錶的實現與操作 C語言實現

2021-06-22 07:56:08 字數 2547 閱讀 2906

鍊錶的基本概念

表頭結點

:

鍊錶中的第乙個結點

,包含指向第乙個資料元素的指標以及

鍊錶自身的一些資訊

資料結點

:

鍊錶中代表資料元素的結點

,包含指向下乙個資料元素的指

針和資料元素的資訊

尾結點

:

鍊錶中的最後乙個資料結點

,其下一元素指標為空

,表示無

後繼

標頭檔案:

#ifndef _linklist_h_

#define _linklist_h_

//採用資料封裝的方式,防止在主函式修改其中的屬性值(有點點像物件導向中的私有屬性)

typedef void linklist;

typedef struct linklistnode //宣告指標域

linklistnode;

//typedef struct _tag_linklistnode linklistnode;

//struct _tag_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

原始檔:

// 鏈式線性表.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include #include #include "linklist.h"

typedef struct //定義頭結點

tlinklist;

struct value //定義資料結構體型別

;int _tmain(int argc, _tchar* argv)

while( linklist_length(list) > 0 )

linklist_destroy(list);

system("pause");

return 0;

}//建立

linklist * linklist_create()

return list;

}//銷毀

void linklist_destroy(linklist * list)

//清空

void linklist_clear(linklist* list)

}//獲得長度

int linklist_length(linklist* list)

return len;

}//插入

int linklist_insert(linklist* list, linklistnode* node, int pos)

node->next = current->next;

current->next = node;

++(slist->len);

ret = 1;

} return ret;

}//獲得結點

linklistnode* linklist_get(linklist* list, int pos)

resnode = current->next;

} return resnode;

}//刪除

linklistnode* linklist_delete(linklist* list, int pos)

resnode = current->next;

current->next = resnode->next;

} slist->len--;

return resnode;

}

執行結果:

543

21刪除了:5

刪除了:4

刪除了:3

刪除了:2

刪除了:1

請按任意鍵繼續. . .

如有錯誤,望不吝指出。

迴圈鍊錶的實現與操作 C語言實現

迴圈鍊錶是另一種形式的鏈式存貯結構。它的特點是表中最後乙個結點的指標域指向頭結點,整個鍊錶形成乙個環。迴圈鍊錶的操作 1,迴圈鍊錶的新操作 2,獲取當前游標指向的資料元素 3,將游標重置指向鍊錶中的第乙個資料元素 4,將游標移動指向到鍊錶中的下乙個資料元素 5,直接指定刪除鍊錶中的某個資料元素 ci...

雙向鍊錶的實現與操作 C語言實現

雙向鍊錶也叫雙鏈表,是鍊錶的一種,它的每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅。所以,從雙向鍊錶中的任意乙個結點開始,都可以很方便地訪問它的前驅結點和後繼結點。單鏈表的侷限 1,單鏈表的結點都只有乙個指向下乙個結點的指標 2,單鏈表的資料元素無法直接訪問其前驅元素 3,逆序訪問單鏈表中...

C語言實現鍊錶基本操作

之前說過順序表的基本操作。顯然,順序表有乙個很大的缺點,就是做插入刪除操作的時候,往往要做很大量的元素移動的操作。這裡我們討論另外一種線性表的表示方法 鏈式儲存結構。由於它不需要邏輯上的相鄰的元素在物理位置上也相鄰,因此它沒有順序儲存結構所具有的弱點,但是同時也失去了順序表的可隨機訪問的有點。inc...