資料結構 單鏈表

2021-09-23 06:04:30 字數 2868 閱讀 5536

實現基於單鏈表的以下操作:

鍊錶的初始化

在鍊錶s最後乙個節點後插入值為data的節點

刪除鍊錶s最後乙個節點

在鍊錶s第乙個節點前插入值為data的節點

刪除鍊錶s的第乙個節點

在鍊錶的pos位置後插入值為data的節點

刪除鍊錶s中pos位置的節點

在鍊錶中查詢值為data的節點,找到返回該節點的位址,否則返回null

獲取鍊錶中有效節點的個數

檢測鍊錶是否為空

銷毀鍊錶

**如下:

引入標頭檔案,定義單鏈表

#pragma once

typedef int sdatatype;

// 鍊錶的節點

typedef struct slistnode

node, *pnode;

// 鍊錶的結構,給乙個頭指標儲存鍊錶第乙個節點的位址

typedef struct slist

slist, *pslist;

// 鍊錶的初始化

void slistinit(slist* s);

// 在鍊錶s最後乙個節點後插入值為data的節點

void slistpushback(slist* s, sdatatype data);

// 刪除鍊錶s最後乙個節點

void slistpopback(slist* s);

// 在鍊錶s第乙個節點前插入值為data的節點

void slistpushfront(slist* s, sdatatype data);

// 刪除鍊錶s的第乙個節點

void slistpopfront(slist* s);

// 在鍊錶的pos位置後插入值為data的節點

void slistinsert(pnode pos, sdatatype data);

// 刪除鍊錶s中pos位置的節點

void slisterase(slist* s, pnode pos);

// 在鍊錶中查詢值為data的節點,找到返回該節點的位址,否則返回null

pnode slistfind(slist* s, sdatatype data);

// 獲取鍊錶中有效節點的個數

size_t slistsize(slist* s);

// 檢測鍊錶是否為空

int slistempty(slist* s);

// 銷毀鍊錶

void slistdestroy(slist* s);

具體功能的實現:

**如下:

#include"slist.h"

#include#include#include// 鍊錶的初始化

void slistinit(slist* s)

//鍊錶擴容

pnode buyslistnode(sdatatype data)

pnewnode->_data = data;

pnewnode->_pnext = null;

return pnewnode;

}// 在鍊錶s最後乙個節點後插入值為data的節點

void slistpushback(slist* s, sdatatype data)

else

pcur->_pnext = pnewnode; }}

// 刪除鍊錶s最後乙個節點

void slistpopback(slist* s)

else if (s->_phead->_pnext == null)

else

free(pcur);

ppre->_pnext = null; }}

// 在鍊錶s第乙個節點前插入值為data的節點

void slistpushfront(slist* s, sdatatype data)

// 刪除鍊錶s的第乙個節點

void slistpopfront(slist* s)

pnode pcur = s->_phead;

s->_phead = pcur->_pnext;

free(pcur);

}// 在鍊錶的pos位置後插入值為data的節點

void slistinsert(pnode pos, sdatatype data)

pnewnode = buyslistnode(data);

pnewnode->_pnext = pos->_pnext;

pos->_pnext = pnewnode;

}// 刪除鍊錶s中pos位置的節點

void slisterase(slist* s, pnode pos)

else if (pos == s->_phead)

else

free(pos);

}// 在鍊錶中查詢值為data的節點,找到返回該節點的位址,否則返回null

pnode slistfind(slist* s, sdatatype data)

pcur = pcur->_pnext;

} return null;

}// 獲取鍊錶中有效節點的個數

int slistsize(slist* s)

return count;

}// 檢測鍊錶是否為空

int slistempty(slist* s)

// 銷毀鍊錶

void slistdestroy(slist* s)

s->_phead == null;

}

資料結構單鏈表

初學資料結構,貼段自己編寫的單鏈表程式,希望自己能夠一直以強大的學習熱情持續下去!自勉!2012年3月30日 於大連 include using namespace std typedef struct node linklist,node linklist makelist int n void ...

資料結構 單鏈表

今天浪費了好多時間,也許是心裡想著明天的考試吧 可自己也知道這次的考試,自己畢竟過不了了,只好等到今年11月份,想想那時自己已經大三了 還有那麼多時間嗎!很懊惱今天不知怎麼回事,感嘆環境真的可以影響乙個人,真的可以 把今天的學習筆記寫下來,沒有進行好好的整理,這回單鏈表的功能較多,操作比較散,最後乙...

資料結構 單鏈表

實現乙個單鏈表 1 查詢 查詢第index個節點 查詢指定的元素 2 插入 將指定的元素插入到第index個節點上 3 刪除 將第index個節點刪除 規律 刪除和新增元素前務必儲存兩個元素的位址引用資訊 public class mylinkedlist 記錄鍊錶結構的頭結點位址引用 privat...