01
#include <bits/stdc++.h>
using namespace std;
typedef struct SUM
{
int data;
}SUM;
typedef struct Sqlist
{
SUM *elem;
int length;
}Sqlist;
int main()
{
int n,MAXSIZE,e;
cin>>n;
MAXSIZE=n;
Sqlist L; //创建顺序表L
L.length=0;
L.elem=new SUM[n];
for(int i=0;i<n;i++)
{
cin>>e;
L.elem[i].data=e;
L.length++;
}
int i;
for(i=0;i<n;i++)
cout<<L.elem[i].data<<' ';
cout<<endl;
for(i=n-1;i>=0;i--)
cout<<L.elem[i].data<<' ';
cout<<endl;
return 0;
}
02
#include <bits/stdc++.h>
using namespace std;
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList; //链表的创建
int main()
{
int n,e;
cin>>n;
LinkList L;//建立带头结点的空表
L=new LNode;
L->next=NULL;
LNode *p;
LNode *r;//尾插法,建立尾指针
r=L;
while(n) //当接收到0退出循环
{
e=n;
p=new LNode;
p->data=e;
p->next=NULL;
r->next=p;
r=p;
cin>>n;
}
p=L->next;
while(p)
{
cout<<p->data<<' ';
p=p->next;
}
cout<<endl;
return 0;
}
03
#include <iostream>
using namespace std;
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
int main()
{
LinkList L;
L=new LNode;
L->next=NULL;
LNode *p;
LNode *r;
r=L;
int n;
while(cin>>n&&n!=0)
{
p=new LNode;
p->data=n;
p->next=NULL;
r->next=p;
r=p;
}
//链表逆转
LNode *pr; //设立一个后置指针
p=L->next;
r=NULL; //前置指针
L->next=NULL;
while(p)
{
pr=p->next;
p->next=r;
r=p;
p=pr;
}
L->next=r;
p=L->next;
while(p)
{
cout<<p->data<<' ';
p=p->next;
}
cout<<endl;
}
04
#include <bits/stdc++.h>
using namespace std;
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList; //链表的创建
int main()
{
int n,e,Length;
Length=0;
LinkList L;//建立带头结点的空表
L=new LNode;
L->next=NULL;
LNode *p;
LNode *H;
while(cin>>n&&n!=0) //当接收到0退出循环
{
e=n;
p=new LNode;
p->data=e;
p->next=L->next;
L->next=p;
Length++;
}
int temp;
for(int i=0;i<Length-1;i++) //冒泡排序
{
H=L->next;
p=H;
for(int j=0;j<Length-i-1;j++)
{
if(p->data>p->next->data)
{
temp=p->data;
p->data=p->next->data;
p->next->data=temp;
}
p=p->next;
}
H=H->next;
}
p=L->next;
while(p)
{
cout<<p->data<<' ';
p=p->next;
}
cout<<endl;
return 0;
}
05
#include <bits/stdc++.h>
using namespace std;
typedef struct Del
{
int data;
struct Del *next;
}LNode,*LinkList;
int main()
{
int n,e;
LinkList L;
LNode *p;
LNode *r;//尾插法
L=new LNode;
L->next=NULL;
r=L;
while(cin>>n&&n!=0)
{
e=n;
if(e%2==0)
continue;
else
{
p=new LNode;
p->data=e;
p->next=NULL;
r->next=p;
r=p;
}
}
p=L->next;
while(p)
{
cout<<p->data<<' ';
p=p->next;
}
cout<<endl;
}
07
#include <bits/stdc++.h>
using namespace std;
typedef struct Del
{
int data;
struct Del *next;
}LNode,*LinkList;
int main()
{
LinkList LA;
LinkList LB;
LNode *pa;
LNode *pb;
LA=new LNode;
LB=new LNode;
LA->next=NULL;
LB->next=NULL;
int n;
LNode *p;
LNode *r;
LNode *q;
r=LA;
while(cin>>n&&n!=0)
{
p=new LNode;
p->data=n;
p->next=NULL;
r->next=p;
r=p;
}
pa=LA;
r=LB;
while(pa->next)
{
if(pa->next->data%2!=0)
{
p=new LNode;
p->data=pa->next->data;
p->next=NULL;
r->next=p;
r=p;
q=pa->next;
pa->next=pa->next->next;
delete q;
}
else pa=pa->next;
}
pa=LA->next;
pb=LB->next;
while(pb)
{
cout<<pb->data<<' ';
pb=pb->next;
}
cout<<endl;
while(pa)
{
cout<<pa->data<<' ';
pa=pa->next;
}
cout<<endl;
}
08
#include <iostream>
using namespace std;
typedef struct PNode
{
float coef;//系数
int expn;//指数
struct PNode *next;
}PNode,*POlynomial;
void PNodeCreat(POlynomial &L);
void AddPolyn(POlynomial &Pa,POlynomial &Pb);
int main()
{
POlynomial LA;
POlynomial LB;
LA=new PNode;
LA->next=NULL;
LB=new PNode;
LB->next=NULL;
PNodeCreat(LA);
PNodeCreat(LB);
AddPolyn(LA,LB);
PNode *p;
p=LA->next;
while(p)
{
cout<<p->coef<<"*x^"<<p->expn<<' ';
p=p->next;
}
cout<<endl;
}
void PNodeCreat(POlynomial &L) //创建多项式
{
PNode *s;
PNode *pre;//前驱
PNode *q;
int n;
char t;
cin>>n;
for(int i=0;i<n;i++)
{
s=new PNode;
cin>>s->coef>>t>>s->expn;//注意将逗号接收
pre=L;
q=L->next;
while(q&&q->expn<s->expn) //查找并标记第一个大于输入项指数的位置
{
pre=q;
q=q->next;
}
s->next=q;
pre->next=s;
}
}
void AddPolyn(POlynomial &Pa,POlynomial &Pb)
{ //多项式的相加
PNode *p1;
PNode *p2;
PNode *p3;
PNode *r;//标记需要删除的结点
p1=Pa->next;
p2=Pb->next;
p3=Pa;
float sum;
while(p1&&p2)
{
if(p1->expn==p2->expn) //指数相等时
{
sum=p1->coef+p2->coef;
if(sum!=0) //系数项相加不等于0
{
p1->coef=sum;//将系数和赋值给p1
p3->next=p1;p3=p1;
p1=p1->next;
r=p2;
p2=p2->next;delete r;//标记p2并删除结点
}
else//系数相加等于0时同时删除p1和p2结点
{
r=p1;p1=p1->next;delete r;
r=p2;p2=p2->next;delete r;
}
}
else if(p1->expn<p2->expn)//当p1指数小于p2指数
{
p3->next=p1;
p3=p1;
p1=p1->next;
}
else//当p1指数大于p2指数
{
p3->next=p2;
p3=p2;
p2=p2->next;
}
}
p3->next=p1?p1:p2; //插入非空多项式的剩余段
delete Pb;
}