資料結構 鍊錶操作

2021-08-21 05:57:22 字數 2460 閱讀 6399

#include #include #include #include typedef int datatype;

typedef struct slistnode

slistnode;

slistnode *__creatnewnode(datatype data);//申請空間存放新鍊錶

void slistnodeprint(slistnode **ppfirst);//列印

void slistinit(slistnode **ppfirst);//初始化

void slistpushback(slistnode **ppfirst, datatype data);//尾插

void slistpushfront(slistnode **ppfirst, datatype data);//頭插

void slistpopback(slistnode **ppfirst);//尾刪

void slistpopfront(slistnode **ppfirst);//頭刪

slistnode *slistfind(slistnode *ppfirst, datatype data);//依照資料找結點

void slistinsert(slistnode **ppfirst, slistnode *pos, datatype data);//按給定結點插入

void slisterase(slistnode **ppfirst, slistnode *pos);//給定結點刪除

void slistremove(slistnode **ppfirst, datatype data);//按值刪除

void slistremoveall(slistnode **ppfirst, datatype data);//按值刪所有

void slistdestroy(slistnode **ppfirst);//銷毀

slistnode *__creatnewnode(datatype data)//申請空間存放新鍊錶

void slistnodeprint(slistnode **ppfirst)

printf("null\n");

}void slistinit(slistnode **ppfirst)//初始化

void slistpushback(slistnode **ppfirst, datatype data)//尾插

for (pnode = *ppfirst; pnode->pnext != null; pnode = pnode->pnext)

pnode->pnext = pnewnode;

}void slistpushfront(slistnode **ppfirst, datatype data)//頭插

pnewnode->pnext = *ppfirst;

*ppfirst = pnewnode;

}void slistpopback(slistnode **ppfirst)//尾刪

for (pnode = *ppfirst; pnode->pnext->pnext != null; pnode = pnode->pnext)

pdel = pnode->pnext;

pnode->pnext = null;

free(pdel);

}void slistpopfront(slistnode **ppfirst)//頭刪

slistnode *slistfind(slistnode *ppfirst, datatype data)//依照資料找結點

return null;

}void slistinsert(slistnode **ppfirst, slistnode *pos, datatype data)//按給定結點插入

for (pnode = *ppfirst; pnode->pnext != pos; pnode = pnode->pnext)

pnode->pnext = pnewnode;

pnewnode->pnext = pos;

}void slisterase(slistnode **ppfirst, slistnode *pos)//給定結點刪除

for (pnode = *ppfirst; pnode->pnext != pos; pnode = pnode->pnext)

pnode->pnext = pos->pnext;

free(pos);

}void slistremove(slistnode **ppfirst, datatype data)//按值刪除

void slistremoveall(slistnode **ppfirst, datatype data)//按值刪所有

else

}if (pnode->data == data) }

void slistdestroy(slistnode **ppfirst)

}

資料結構 鍊錶操作 單向鍊錶

資料結構中的鍊錶基本操作,我這裡是也是為了學習記錄我自己的書寫的 過程.其中包含取鍊錶的新建,新增元素,刪除元素,取指定索引值,向元素尾部追加元素 等等 資料結構中的鍊錶基本操作,我這裡是也是為了學習記錄我自己的書寫的 過程.其中包含取鍊錶的新建,新增元素,刪除元素,取指定索引值,向元素尾部追加元素...

資料結構之鍊錶操作

線性表鏈式儲存結構定義 為了表示每個資料元素ai與其後繼資料元素ai 1之間的邏輯關係,對資料元素ai來說,除了儲存其本身資訊外,還需儲存乙個指示其直接後繼的資訊。我們把儲存資料元素的域稱為資料域,把儲存直接後繼位置的域稱為指標域。指標域中儲存的資訊稱為指標或鏈。這兩部分資訊組成資料元素ai的儲存影...

資料結構之鍊錶操作

1 基本概念 鏈式儲存結構不需要用位址連續的儲存單元來實現,而是通過 鏈 建立起資料元素之間的順序關係,因此它不要求兩個在邏輯上相鄰的資料元素在物理邏輯上也相鄰。從而,在插入和刪除元素的時候,不需要對原來的資料元素進行移動,只需要改變鍊錶節點之間的指向關係即可,從而提公升了執行時效率。2 主要儲存結...