DS 迴圈雙向鍊錶介面的實現及其應用

2021-09-25 13:39:32 字數 2349 閱讀 1427

宣告檔案list.h

list.h
#ifndef _list_h_

#define _list_h_

#include#include#includetypedef int ltdatatype;

typedef struct listnode

listnode;

typedef struct list

list;

void listinit(list* plist);//鍊錶的初始化

void listdestory(list* plist);

void listpushback(list* plist, ltdatatype x);

void listpopback(list* plist);

void listpushfront(list* plist, ltdatatype x);

void listpopfront(list* plist);

listnode* listfind(list* plist, ltdatatype x);

void listinsert(listnode* pos, ltdatatype x);

void listerase(listnode* pos);

void listremove(list* plist, ltdatatype x);

void listdistinct(list* plist);

void listmerge(list * plist1,list * plist2);

void listprint(list* plist);

#endif

實現檔案list.c

list.c
#include"list.h"

void listinit(list* plist)//鍊錶的初始化

void listdestory(list* plist)//鍊錶的摧毀

free(plist->_head);

plist->_head = null;

}void listpushback(list* plist, ltdatatype x)//後插

void listpopback(list* plist)//後刪

void listpushfront(list* plist, ltdatatype x)//頭插

void listpopfront(list* plist)//頭刪

listnode* listfind(list* plist, ltdatatype x)//找到data為x的結點

} return null;

}void listinsertafter(listnode* pos, ltdatatype x)//指定pos後插入x

void listinsertfront(listnode* pos, ltdatatype x)//指定pos前插入x

void listerase(listnode* pos)//刪除pos位置的節點

void listremove(list* plist, ltdatatype x)//移除值為x的結點

}void listprint(list* plist)//列印鍊錶

printf("->head");

}

測試檔案main.c

main.c
#include"list.h"

int main()

一,刪除鏈在乙個排序的鍊錶中,存在重複的節點,請刪除表中重複的結點,重複的結點不保留,返回鍊錶的頭指標

//刪除鍊錶中重複的數

void listdistinct(list* plist)

else

}}

二,將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的

//將兩個有序鍊錶合併為乙個有序鍊錶

void listmerge(list * plist1, list * plist2)

else

}//如果list2走到了頭就表示其所有的節點都已經插入到list1中了,這時只需要釋放頭就行

if (cur1 == plist1->_head)//當list1走到頭兒list2還未結束時,需要把list2剩餘的節點接到list1後面。

free(plist2->_head);//釋放掉list2的頭

}

帶頭雙向鍊錶介面的實現

帶頭雙向鍊錶 include include include typedef int datatype typedef struct listnodelistnode typedef struct twolisttwolist 初始化 void twolistinit twolist pt 銷毀 v...

DS 鍊錶的概念及單鏈表介面的實現及其應用

鍊錶的結構型別可分為 1,單鏈表,雙向鍊錶 2,不帶頭單鏈表,帶頭鍊錶 3,單鏈表,迴圈單鏈表 鍊錶的實現 一,單鏈表介面的實現 宣告檔案slist.h slist.h ifndef slist h define slist h include include include include inc...

資料結構 雙向迴圈鍊錶介面實現

我們之前討論的是slist單向鍊錶,即single list。這篇部落格來進行dlist雙向鍊錶,即double list的介面實現。雙向鍊錶的每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅,所以它的實現相比於單鏈表簡單了很多,但稍微繁瑣了一些。本篇特指不帶頭 雙向 迴圈鍊錶 鍊錶結點結構體...