數據結構第二次上機
十個贊出下一期
十個贊出下一期
十個贊出下一期
心得
暫時沒有
題目如下
三個題目交兩個
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);
}