c 實現單鏈表

2021-08-28 17:04:58 字數 3735 閱讀 8468

參考了:

源**(包含所有資訊):

/*單鏈表使用方法*/

/* *初始化鍊錶:建立乙個鍊錶類singlelinkedlist的物件。傳入乙個結點以初始化鍊錶或使用預設建構函式建立乙個空鍊錶

* 插入操作:void insert(nodenode,int pos)

* 刪除操作:void removeat(int pos)

* 獲取某個位置的結點的方法:nodegetat(int pos)

* 查詢某個資料所在結點的方法:nodefind(t t_data)

* 列印整個鍊錶結點的資料域(從頭結點開始):void print()

* 判斷鍊錶是否為空:bool isempty()

* 獲取鍊錶長度:使用length屬性

* 清空鍊錶:void clear()

* 反轉鍊錶:void converse()

* 合併兩個鍊錶:singlelinkedlistcombine(singlelinkedlistlist1,singlelinkedlistlist2)

*//*日誌*/

/* *2018.10.4第一次建立

2018.10.5 第一次增改:增加鍊錶反轉的方法,增加合併兩個鍊錶的靜態方法

*/using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace singlelinkedlist

public nodenext

//方法

public node(t t_data = default(t))

};//單鏈錶類(工具)

public class singlelinkedlist

public int length

//方法

public singlelinkedlist()

public singlelinkedlist(nodenode)

nodeh = head;

while (h.next != null)

h.next = temp;

length++;

}nodeh = head;

while (h.next != null)

h.next = node;

length++;

}public bool isempty()//判斷鍊錶是否為空

return false;

}public void clear()//重置head

public void removeat(int pos)//刪除某個合法位置的結點

if(pos == 1)//刪除頭結點的情況

nodetemp = head;

int i = 2;

if (pos == length)//刪除尾結點的情況

temp.next = null;

length--;

return ;

}i = 1;//一般情況

while (i < pos - 1)

temp.next = temp.next.next;

length--;

}public nodegetat(int pos)//得到在某個合法位置的結點.

nodetemp = head;

int i = 1;

while(i < pos)

return temp;

}public nodefind(t t_data)//得到符合傳入資料的結點

nodetemp = head;

while(temp.next != null)

temp = temp.next;

}console.writeline("未找到符合的資料結點!");

return null;

}//插入結點到給定的位置

//示例:插入位1(結點1) 插入位2(結點2) 插入位3(結點3)插入位4

public void insert(nodenode, int pos)

if(pos == 0)//插入到頭結點之前

nodetemp = head;//插入到尾結點之後

if (pos == length)

temp.next = node;

node.next = null;

length++;

}int i = 1;//一般情況

while (i < pos)

node.next = temp.next;

temp.next = node;

length++;

}public void print()

nodetemp = head;

console.writeline("**********************");

console.writeline("鍊錶長度:", length);

console.writeline(temp.data);

while (temp.next != null)

console.writeline("**********************");

}//反轉鍊錶操作

public void converse()

nodebehind = head;

nodetemp = behind.next;

if(temp.next == null)//處理鍊錶中只有兩個結點的情況

nodeforward = temp.next;

behind.next = null;//重置尾結點

temp.next = behind;//反轉

dowhile (forward != null);//一般情況

head = temp;//重置頭結點

}public static singlelinkedlistcombine(singlelinkedlistlist1,singlelinkedlistlist2)

temp = list2.head;

while (temp != null)

return list;}};

class program

if(list.find("結點七") == null)

//clear方法測試

console.writeline("\n\n\n");

list.clear();

list.print();

list.removeat(0);

*//*

//converse方法測試

singlelinkedlistlist = new singlelinkedlist();

list.converse();

list.print();

*//*

//合併兩個鍊錶測試

singlelinkedlistlist1 = new singlelinkedlist();

singlelinkedlistlist2 = new singlelinkedlist();

singlelinkedlistlist = singlelinkedlist.combine(list1,list2);

list.print();

list.converse();

list.print();*/}

}}

C 單鏈表實現

1 單向鍊錶 單向鍊錶 include include class cnode 節點類 class clist 鍊錶類 cnode movetrail cnode pnode 移動到尾節點 return ptmp void addnode cnode pnode 新增節點 else m nodesu...

c 實現單鏈表

include include using namespace std typedef int datatype struct linknode 建立乙個節點 class slist void swap slist s slist const slist s head null tail null ...

單鏈表(C實現)

ifndef list h define list h typedef struct node node typedef struct list list initlist int insertlist list l,void data,int size node findnodebykey lis...