You are on page 1of 23

Danh sách liên kết đơn

- Code :
namespace DSLienKetDon
{

public partial class Form1 : Form


{
class node
{
public int data;
public node next;
public node(int a, node b)
{
data = a;
next = b;
}
}
public Form1()
{
InitializeComponent();
}
List<string> lotus = new List<string>();
node head;
node tail;
int size = 0;
public bool isempty()
{
return (size == 0);
}

private void btnAdd_Click(object sender, System.EventArgs e)


{
int i = size;
int a = int.Parse(txtVa.Text);
node rose = new node(a, null);
if (isempty())
{
head = rose;
tail = head;
lotus.Add("Phan tu " + i + " : " + tail.data);
}
else
{
tail.next = rose;
tail = rose;
lotus.Add("Phan tu " + i + " : " + tail.data);
}
size += 1;
lstDs.Items.Clear();
lstDs.Items.AddRange(lotus.ToArray());
txtVa.Clear();
txtVa.Focus();
}

private void btnRS_Click(object sender, EventArgs e)


{
size = 0;
lotus.Clear();
lstDs.Items.Clear();
txtVa.Clear();
txtVa.Focus();
txtVa1.Clear();
txtVa2.Clear();
txtVa3.Clear();
txtAd2.Clear();
}

private void btnAdd1_Click(object sender, EventArgs e)


{
int a = int.Parse(txtVa1.Text);
node rose = new node(a, null);
if (isempty())
{
head = rose;
tail= rose;
}
else
{
rose.next = head;
head = rose;
}
size += 1;
lotus.Clear();
node begin = head;
for (int i = 0;i < size; i++)
{
lotus.Add("Phan tu " + i + " : " + begin.data);
begin = begin.next;
}
lstDs.Items.Clear();
lstDs.Items.AddRange(lotus.ToArray());
txtVa1.Clear();
txtVa1.Focus();

private void btnAdd2_Click(object sender, EventArgs e)


{
int a = int.Parse(txtVa2.Text);
int b = int.Parse (txtAd2.Text);
node rose = new node(a, null);
node begin = head;
for (int i=0;i <b-1; i++)
{
begin=begin.next;
}
rose.next = begin.next;
begin.next = rose;
size += 1;
lotus.Clear();
begin = head;
for (int i = 0; i < size; i++)
{
lotus.Add("Phan tu " + i + " : " + begin.data);
begin = begin.next;
}
lstDs.Items.Clear();
lstDs.Items.AddRange(lotus.ToArray());
txtVa2.Clear();
txtVa2.Focus();
txtAd2.Clear();
}

private void btnXoa_Click(object sender, EventArgs e)


{
int a = int.Parse(txtVa3.Text);
node begin = head;
for (int i = 0; i < a - 1; i++)
{
begin = begin.next;
}
node rose = begin.next;
int element = rose.data;
begin.next = rose.next;
size = size - 1;
lotus.Clear();
begin = head;
for (int i = 0; i < size; i++)
{
lotus.Add("Phan tu " + i + " : " + begin.data);
begin = begin.next;
}
lstDs.Items.Clear();
lstDs.Items.AddRange(lotus.ToArray());
txtVa3.Clear();
txtVa3.Focus();
}

private void btnEx_Click(object sender, EventArgs e)


{
DialogResult result = MessageBox.Show("Ban co muon thoat khoi chuong trinh ?",""
, MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
if (result == DialogResult.OK)
{
Close();
}
}

private void btnXoahead_Click(object sender, EventArgs e)


{
node rose = head.next;
int element = head.data;
head= rose;
size = size - 1;
lotus.Clear();
node begin = head;
for (int i = 0; i < size; i++)
{
lotus.Add("Phan tu " + i + " : " + begin.data);
begin = begin.next;
}
lstDs.Items.Clear();
lstDs.Items.AddRange(lotus.ToArray());
}

private void btnXoatail_Click(object sender, EventArgs e)


{
node rose = head;
for ( int i = 0; i < size - 1; i++)
{
rose=rose.next;
}
int element = tail.data;
tail= rose;
size = size - 1;
lotus.Clear();
node begin = head;
for (int i = 0; i < size; i++)
{
lotus.Add("Phan tu " + i + " : " + begin.data);
begin = begin.next;
}
lstDs.Items.Clear();
lstDs.Items.AddRange(lotus.ToArray());
}
private void btnSe_Click(object sender, EventArgs e)
{
node begin = head;
int a = int.Parse(txtSe.Text);
for (int i=0; i < size;i++)
{
if (begin.data == a)
{
MessageBox.Show("Phan tu can tim o vi tri " + i, "");
return;
}
begin=begin.next;
}
MessageBox.Show("Khong tim thay phan tu", "");
}
}
}

- Kết quả :
Thêm lần lượt các phần tử 1,2,3,4,5,6,8,9 vào danh sách.
Chèn phần tử 0 vào đầu danh sách :

Chèn phần tử 7 vào vị trí thứ 7 :


Xóa phần tử vị trí thứ 4 :

Xóa phần tử đầu :


Xóa phần tử cuối :

Tìm phần tử có giá trị là 4 :


Danh sách liên kết vòng
- Code :
public partial class Form1 : Form
{
class node
{
public int data;
public node next;
public node(int a, node b)
{
data = a;
next = b;
}
}

public Form1()
{
InitializeComponent();
}
List<string> lotus = new List<string>();
node head;
node tail;
int size = 0;
public bool isempty()
{
return (size == 0);
}
private void btnAdd_Click(object sender, System.EventArgs e)
{
int i = size;
int a = int.Parse(txtVa.Text);
node rose = new node(a, null);
if (isempty())
{
head = rose;
tail = head;
lotus.Add("Phan tu " + i + " : " + tail.data);
}
else
{
tail.next = rose;
tail = rose;
tail.next = head;
lotus.Add("Phan tu " + i + " : " + tail.data);
}
size += 1;
lstDs.Items.Clear();
lstDs.Items.AddRange(lotus.ToArray());
txtVa.Clear();
txtVa.Focus();
}

private void btnRS_Click(object sender, EventArgs e)


{
size = 0;
txtSe.Clear();
lotus.Clear();
lstDs.Items.Clear();
txtVa.Clear();
txtVa.Focus();
txtVa1.Clear();
txtVa2.Clear();
txtVa3.Clear();
txtAd2.Clear();
}

private void btnAdd1_Click(object sender, EventArgs e)


{
int a = int.Parse(txtVa1.Text);
node rose = new node(a, null);
if (isempty())
{
head = rose;
tail= rose;
}
else
{
rose.next = head;
head = rose;
tail.next = head;
}
size += 1;
lotus.Clear();
node begin = head;
for (int i = 0;i < size; i++)
{
lotus.Add("Phan tu " + i + " : " + begin.data);
begin = begin.next;
}
lstDs.Items.Clear();
lstDs.Items.AddRange(lotus.ToArray());
txtVa1.Clear();
txtVa1.Focus();

private void btnAdd2_Click(object sender, EventArgs e)


{
int a = int.Parse(txtVa2.Text);
int b = int.Parse (txtAd2.Text);
node rose = new node(a, null);
node begin = head;
for (int i=0;i <b-1; i++)
{
begin=begin.next;
}
rose.next = begin.next;
begin.next = rose;
size += 1;
lotus.Clear();
begin = head;
for (int i = 0; i < size; i++)
{
lotus.Add("Phan tu " + i + " : " + begin.data);
begin = begin.next;
}
lstDs.Items.Clear();
lstDs.Items.AddRange(lotus.ToArray());
txtVa2.Clear();
txtVa2.Focus();
txtAd2.Clear();
}

private void btnXoa_Click(object sender, EventArgs e)


{
int a = int.Parse(txtVa3.Text);
node begin = head;
for (int i = 0; i < a - 1; i++)
{
begin = begin.next;
}
node rose = begin.next;
int element = rose.data;
begin.next = rose.next;
size = size - 1;
lotus.Clear();
begin = head;
for (int i = 0; i < size; i++)
{
lotus.Add("Phan tu " + i + " : " + begin.data);
begin = begin.next;
}
lstDs.Items.Clear();
lstDs.Items.AddRange(lotus.ToArray());
txtVa3.Clear();
txtVa3.Focus();
}

private void btnEx_Click(object sender, EventArgs e)


{
DialogResult result = MessageBox.Show("Ban co muon thoat khoi chuong trinh ?",""
, MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
if (result == DialogResult.OK)
{
Close();
}
}

private void btnXoahead_Click(object sender, EventArgs e)


{
node rose = head.next;
int element = head.data;
head= rose;
tail.next = head;
size = size - 1;
lotus.Clear();
node begin = head;
for (int i = 0; i < size; i++)
{
lotus.Add("Phan tu " + i + " : " + begin.data);
begin = begin.next;
}
lstDs.Items.Clear();
lstDs.Items.AddRange(lotus.ToArray());
}

private void btnXoatail_Click(object sender, EventArgs e)


{
node rose = head;
for ( int i = 0; i < size - 1; i++)
{
rose=rose.next;
}
int element = tail.data;
tail= rose;
tail.next= head;
size = size - 1;
lotus.Clear();
node begin = head;
for (int i = 0; i < size; i++)
{
lotus.Add("Phan tu " + i + " : " + begin.data);
begin = begin.next;
}
lstDs.Items.Clear();
lstDs.Items.AddRange(lotus.ToArray());
}

private void btnSe_Click(object sender, EventArgs e)


{
node begin = head;
int a = int.Parse(txtSe.Text);
for (int i=0; i < size;i++)
{
if (begin.data == a)
{
MessageBox.Show("Phan tu can tim o vi tri " + i, "");
return;
}
begin=begin.next;
}
MessageBox.Show("Khong tim thay phan tu", "");
}
}

- Kết quả :
Thêm lần lượt các phần tử 1,2,3,4,5,6,8,9 vào danh sách.

Chèn phần tử 0 vào đầu danh sách :


Chèn phần tử 7 vào vị trí thứ 7 :

Xóa phần tử vị trí thứ 4 :


Xóa phần tử đầu :

Xóa phần tử cuối :


Tìm phần tử có giá trị là 4 :

Danh sách liên kết kép


- Code :
public partial class Form1 : Form
{
class node
{
public int data;
public node next;
public node prev;
public node(int a, node b, node c)
{
data = a;
next = b;
prev = c;
}
}

public Form1()
{
InitializeComponent();
}
List<string> lotus = new List<string>();
node head;
node tail;
int size = 0;
public bool isempty()
{
return (size == 0);
}

private void btnAdd_Click(object sender, System.EventArgs e)


{
int i = size;
int a = int.Parse(txtVa.Text);
node rose = new node(a, null,null);
if (isempty())
{
head = rose;
tail = head;
lotus.Add("Phan tu " + i + " : " + tail.data);
}
else
{
tail.next = rose;
rose.prev = tail;
tail = rose;
tail.next = head;
head.prev = tail;
lotus.Add("Phan tu " + i + " : " + tail.data);
}
size += 1;
lstDs.Items.Clear();
lstDs.Items.AddRange(lotus.ToArray());
txtVa.Clear();
txtVa.Focus();
}

private void btnRS_Click(object sender, EventArgs e)


{
size = 0;
txtSe.Clear();
lotus.Clear();
lstDs.Items.Clear();
txtVa.Clear();
txtVa.Focus();
txtVa1.Clear();
txtVa2.Clear();
txtVa3.Clear();
txtAd2.Clear();
}

private void btnAdd1_Click(object sender, EventArgs e)


{
int a = int.Parse(txtVa1.Text);
node rose = new node(a, null,null);
if (isempty())
{
head = rose;
tail= rose;
}
else
{
rose.next = head;
head.prev = rose;
head = rose;
tail.next = head;
head.prev = tail;
}
size += 1;
lotus.Clear();
node begin = head;
for (int i = 0;i < size; i++)
{
lotus.Add("Phan tu " + i + " : " + begin.data);
begin = begin.next;
}
lstDs.Items.Clear();
lstDs.Items.AddRange(lotus.ToArray());
txtVa1.Clear();
txtVa1.Focus();

private void btnAdd2_Click(object sender, EventArgs e)


{
int a = int.Parse(txtVa2.Text);
int b = int.Parse (txtAd2.Text);
node rose = new node(a, null, null);
node begin = head;
for (int i=0;i <b-1; i++)
{
begin=begin.next;
}
rose.next = begin.next;
begin.next.prev = rose;
begin.next = rose;
rose.prev = begin;
size += 1;
lotus.Clear();
begin = head;
for (int i = 0; i < size; i++)
{
lotus.Add("Phan tu " + i + " : " + begin.data);
begin = begin.next;
}
lstDs.Items.Clear();
lstDs.Items.AddRange(lotus.ToArray());
txtVa2.Clear();
txtVa2.Focus();
txtAd2.Clear();
}

private void btnXoa_Click(object sender, EventArgs e)


{
int a = int.Parse(txtVa3.Text);
node begin = head;
for (int i = 0; i < a - 1; i++)
{
begin = begin.next;
}
node rose = begin.next;
int element = rose.data;
begin.next = rose.next;
rose.next.prev = begin;
size = size - 1;
lotus.Clear();
begin = head;
for (int i = 0; i < size; i++)
{
lotus.Add("Phan tu " + i + " : " + begin.data);
begin = begin.next;
}
lstDs.Items.Clear();
lstDs.Items.AddRange(lotus.ToArray());
txtVa3.Clear();
txtVa3.Focus();
}

private void btnEx_Click(object sender, EventArgs e)


{
DialogResult result = MessageBox.Show("Ban co muon thoat khoi chuong trinh ?",""
, MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
if (result == DialogResult.OK)
{
Close();
}
}

private void btnXoahead_Click(object sender, EventArgs e)


{
node rose = head.next;
int element = head.data;
head= rose;
tail.next = head;
head.prev = tail;
size = size - 1;
lotus.Clear();
node begin = head;
for (int i = 0; i < size; i++)
{
lotus.Add("Phan tu " + i + " : " + begin.data);
begin = begin.next;
}
lstDs.Items.Clear();
lstDs.Items.AddRange(lotus.ToArray());
}

private void btnXoatail_Click(object sender, EventArgs e)


{
node rose = head;
for ( int i = 0; i < size - 1; i++)
{
rose=rose.next;
}
int element = tail.data;
tail= rose;
tail.next= head;
head.prev = tail;
size = size - 1;
lotus.Clear();
node begin = head;
for (int i = 0; i < size; i++)
{
lotus.Add("Phan tu " + i + " : " + begin.data);
begin = begin.next;
}
lstDs.Items.Clear();
lstDs.Items.AddRange(lotus.ToArray());
}

private void btnSe_Click(object sender, EventArgs e)


{
node begin = head;
int a = int.Parse(txtSe.Text);
for (int i=0; i < size;i++)
{
if (begin.data == a)
{
MessageBox.Show("Phan tu can tim o vi tri " + i, "");
return;
}
begin=begin.next;
}
MessageBox.Show("Khong tim thay phan tu", "");
}
}

- Kết quả :
Thêm lần lượt các phần tử 1,2,3,4,5,6,8,9 vào danh sách.
Chèn phần tử 0 vào đầu danh sách :

Chèn phần tử 7 vào vị trí thứ 7 :


Xóa phần tử vị trí thứ 4 :

Xóa phần tử đầu :


Xóa phần tử cuối :

Tìm phần tử có giá trị là 4 :

You might also like