第二次數據結構上機

數據結構第二次上機

十個贊出下一期
十個贊出下一期
十個贊出下一期

心得

暫時沒有

題目如下

三個題目交兩個

1.編寫程序,實現約瑟夫環。

2.編寫程序,實現多項式的加減操作。

3.設C={a1,b1,a2,b2,…an,bn}爲一線性表,採用帶頭結點的單鏈表LC存儲,編寫一程序將其拆分爲兩個線性表。是的A={a1,a2,…an},B={bn,bn-1,…b1}。

第一題實現代碼

可以把中文改一下,不要這個都一樣,這就沒意思了。

#include<iostream>
using namespace std;
struct node
{
    int data;
    struct node *next;
};
 
 
int main()
{
    node *L,*r,*s;
    L = new node;
    r =L;
    int n,i;
    cout<<"多少?:";
	cin>>n;cout<<endl; 
    int k = 3;
    for(i = 1;i<=n;i++)       
    {
        s = new node;
        s->data = i;
        r->next = s;
        r= s;
    }
    r->next =L->next;       
    node *p;
    p = L->next;
    delete L;  
 	cout<<"輸出順序是:"; 
    while(p->next != p)                           
    {
        for(i = 1;i<k-1;i++)
        {
            p = p->next;                        
        }
        cout<<p->next->data<<"->";
        p->next = p->next->next;          
        p = p->next;
    }
    cout<<p->data<<endl;
    return 0;
}

第二題及實現代碼

#include<iostream>
using namespace std;
struct LinkList
{
	char data;
	LinkList * next;
};

void CreateListR(LinkList* &L, char a[], int n)
{
	L = new LinkList;
	L->next = NULL;
	LinkList* r = L;
	for (int i = 0; i < n; ++i)
	{
		LinkList* s = new LinkList;
		s->data = a[i];
		s->next = NULL;
		r->next = s;
		r = s;
	}
}

void DisplayList(LinkList* L)
{
	cout << "單鏈表輸出爲: ";
	LinkList* p = L->next;
	while (p != NULL)
	{
		cout << p->data << " ";
		p = p->next;
	}
	cout << endl;
}

int main()
{
	LinkList* L, *L1, *L2;
	L = L1 = L2 = NULL;
	const int n = 8;
	char a[n] = { 'a','b','c','d','e','f','g','h'};
	CreateListR(L, a, n);
	cout << "原始";
	DisplayList(L);
	char a1[n / 2], a2[n / 2];
	LinkList* p = L->next;
	int k = 0;
	while (p != NULL)
	{
		int j = k % 2;
		if (j == 0)
		{
			a1[k/2] = p->data;
		}
		else
		{
			a2[k / 2] = p->data;
		}
		++k;
		p = p->next;
	}
	CreateListR(L1, a1, n / 2);
	CreateListR(L2, a2, n / 2);
	cout << "L1";
	DisplayList(L1);
	cout << "L2";
	DisplayList(L2);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章