Cài đặt danh sách vòng đơn bằng C# và C++

Chương trình cài đặt danh sách liên kết vòng, nội dung của nút là số nguyên, chương trình có các chức năng:

  • Thêm một nút: nếu nội dung nhập vào là chẵn thì thêm nút mới vào đầu danh sách, nếu nội dung là lẻ thì thêm nút mới vào cuối danh sách.
  •  Duyệt danh sách.

Code C#:

using System;

namespace DanhsachlienketvongDon
{
    class Program
    {
        static void insert(ref Node plist, int x)
        {
            if(plist.next==null) //Nếu danh sách hiện tại rỗng
            {
                
                plist.info = x;
                plist.next = plist;
            }
            else //Danh sách có phần tử
            {
                if(x%2==0) //x là số chẳng thì thêm vào đầu danh sách
                {
                    Node newnode = new Node();
                    newnode.info = x;
                    newnode.next = plist.next;
                    plist.next = newnode;
                }   
                else //x là số lẻ thì thêm vào cuối danh sách
                {
                    Node newnode = new Node();
                    newnode.info = x;
                    newnode.next = plist.next;
                    plist.next = newnode;
                    plist = newnode;
                }    
            }
        }

        static void printlist(Node plist)
        {
            Node p = plist.next;
            while(p!=plist)
            {
                Console.Write(p.info+"; ");
                p = p.next;
            }
            Console.Write(plist.info+".");
        }

        static void Main(string[] args)
        {
            Node Plist=new Node();
            while(1==1)
            {
                Console.WriteLine();
                Console.WriteLine("==========MENU==========");
                Console.WriteLine("1. Nhap danh sach");
                Console.WriteLine("2. Duyet danh sach");
                Console.WriteLine("3. Thoat");
                Console.WriteLine("========================");
                Console.Write("Ban chon menu so: ");
                string chon = Console.ReadLine();
                if (chon == "1")
                {
                    int x = 0;
                    while(1==1)
                    {
                        Console.Write("Hay nhap so roi bam enter (nhap -1 de ket thuc viec nhap): ");
                        x = int.Parse(Console.ReadLine());
                        if (x != -1)
                        {
                            insert(ref Plist, x);
                        }
                        else
                        {
                            break;
                        }
                    }    
                    
                    
                }
                else if (chon == "2")
                {
                    Console.WriteLine();
                    Console.Write("Ket qua Duyet danh sach: ");
                    printlist(Plist);
                }
                else
                {
                    break;
                }
            }
        }
    }

    class Node
    {
        public int info;
        public Node next;

        public Node()
        {
            this.info = 0;
            this.next = null;
        }
    }
}

Code C++:

//Viết chương trình có cài đặt danh sách liên kết vòng, nội dung của nút là số nguyên, chương trình có các chức năng:
//- Thêm một nút: nếu nội dung nhập vào là chẵn thì thêm nút mới vào đầu danh sách, nếu nội dung là lẻ thì thêm nút mới vào cuối danh sách.
//- Duyệt danh sách.

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>

//Khai báo kiểu dữ liệu Node
struct Node {
    int info;
    struct Node * next;
};

void insert(Node* &plist, int x)
{
	if(plist->next==NULL) //Nếu danh sách hiện tại rỗng
	{
		
		plist->info = x;
		plist->next = plist;
	}
	else //Danh sách có phần tử
	{
		if(x%2==0) //x là số chẳng thì thêm vào đầu danh sách
		{
			Node* newnode = (Node *) malloc (sizeof(Node));
			newnode->info = x;
			newnode->next = plist->next;
			plist->next = newnode;
		}   
		else //x là số lẻ thì thêm vào cuối danh sách
		{
			Node* newnode = (Node *) malloc (sizeof(Node));
			newnode->info = x;
			newnode->next = plist->next;
			plist->next = newnode;
			plist = newnode;
		}    
	}
}

void printlist(Node* &plist)
{
	Node p = plist->next;
	while(p!=plist)
	{
		cout<<p->info<<"; ";
		p = p->next;
	}
	cout<<plist->info<<".";
}

int main()
{
	Node* Plist=(Node *) malloc (sizeof(Node));
	while(1==1)
	{
		cout<<"\n==========MENU==========";
		cout<<"\n1. Nhap danh sach";
		cout<<"\n2. Duyet danh sach";
		cout<<"\n3. Thoat";
		cout<<"\n========================";
		cout<<"\nBan chon menu so: ";
		int chon=0;
		scanf("%d", &chon);
		
		if (chon == 1)
		{
			int x = 0;
			while(1==1)
			{
				cout<<"Hay nhap so roi bam enter (nhap -1 de ket thuc viec nhap): ";
				int x = -1;
				scanf("%d", &x);
				if (x != -1)
				{
					insert(Plist, x);
				}
				else
				{
					break;
				}
			}    
			
			
		}
		else if (chon == 2)
		{
			cout<<"\nKet qua Duyet danh sach: ";
			printlist(Plist);
		}
		else
		{
			break;
		}
	}
	return 0;
}

Hy vọng hữu ích với bạn!

Nosomovo

Chia sẻ lên
WEB5k - Thiết kế website giá rẻ chuẩn SEO