參考了:
源**(包含所有資訊):
/*單鏈表使用方法*/
/* *初始化鍊錶:建立乙個鍊錶類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...