今日再做后天答辩需要的PPT和代码,仅做了三道编程题,完成两道,一道未能通过测试。
第一题链接:https://pintia.cn/problem-sets/15/problems/724
本体是一个函数题,需要注意的是,如何实现能通过多个节点以及如何判断出空结点。
int Rverse(List L)
{
List p1=NULL,p2=NULL;
while (L)
{
p2=L->Next;
L->Next=P1;
p1=L;
L=p2;
}
return p1;
}
第二题是一个程序题,链接是https://pintia.cn/problem-sets/15/problems/710
#include <iostream>
#include <stdio.h>
#include<stdlib.h>
using namespace std;
class List{
private:
class Node{
int xishu;
int zhishu
Node *head;
};
public:
List(){
head=new Node;
head-nest=NULL;
}
void makeEmpty()
{
Node *p;
p=new Node;
while(head->next!=NULL)
{
p=head->next;
head->next=p->next;
delete p;
}
}
void input(int n)
{
int val1,val2;
Node *newnode;
Node *last;
last=head;
for(int i=0;i<n;i++)
{
cin>>val1>>val2;
newnode=new Node;
newnode->coefficient=val1;
newnode->exponent=val2;
last->next=newnode;
last=newnode;
}
last->next=NULL;
}
void output()
{
Node *p;
p=head->next;
if(p==NULL){
cout<<"0 0"<<endl;
}
while(p!=NULL){
cout<<p->coefficient<<" "<<p->exponent;
p=p->next;
if(p) cout<<" ";
else cout<<endl;
}
}
void mutiply(Linklist &a,Linklist &b)
{
Node *newnode,*current;
Node *p,*q;
current = head;
p=a.head->next;
q=b.head->next;
if(p==NULL||q==NULL)
head->next=NULL;
else
{
int maxsize = q->exponent + p->exponent;
int *result;
result = new int[maxsize + 1];
for (int i = 0; i<= maxsize; i++)
result[i] = 0;
}
while(p!=NULL)
{
while(q!=NULL)
{
int k;
k=p-> p->exponent + q->exponent;
result[k] = result[k] + p->coefficient * q->coefficient;
q = q->next;
}
p = p->next;
q = b.head->next;
}
for (int i = maxsize; i >= 0; i--)
{
if (result[i] != 0)
{
newnode = new Node;
newnode->exponent = i;
newnode->coefficient = result[i];
current->next = newnode;
current = newnode;
}
delete[]result;
current->next = NULL;
}
}
void add(Linklist &a, Linklist &b)
{
Node *p, *q;
Node *newnode;
Node *current;
current=head;
p = a.head->next;
q = b.head->next;
if(p==NULL&&q!=NULL){
head->next=q;
}
else if(q==NULL&&p!=NULL){
head->next=p;
}
else if(p==NULL&&q==NULL){
head->next=p;
}
else {
while (p && q) {
if (p->exponent > q->exponent) {
newnode = new Node;
newnode->exponent = p->exponent;
newnode->coefficient = p->coefficient;
current->next = newnode;
current = newnode;
p = p->next;
} else if (p->exponent == q->exponent) {
if (p->coefficient + q->coefficient == 0) {
p = p->next;
q = q->next;
} else {
newnode = new Node;
newnode->exponent = p->exponent;
newnode->coefficient = p->coefficient + q->coefficient;
current->next = newnode;
current = newnode;
p = p->next;
q = q->next;
}
} else {
newnode = new Node;
newnode->coefficient = q->coefficient;
newnode->exponent = q->exponent;
current->next = newnode;
current = newnode;
q = q->next;
}
}
current->next = NULL;
if (p != NULL) current->next = p;
if (q != NULL) current->next = q;
}
}
};
int main()
{
Linklist a,b,c,d;
int alength,blength;
cin>>alength;
a.input(alength);
cin>>blength;
b.input(blength);
c.mutiply(a,b);
c.output();
d.add(a,b);
d.output();
return 0;
}
```
转载请注明原文地址:https://ipadbbs.8miu.com/read-17054.html