设有一个线性表La,请用算法分别完成顺序存储结构和链式存储结构下线性表La的逆序。
2个回答
2013-10-25
展开全部
#include<iostream>
#define MAXSIZE 50
using namespace std;typedef struct node //链式结构线性表结点
{
int data;
struct node *next;
}SLink;typedef struct list //顺序结构线性表结点
{
int length;
int data[MAXSIZE];
}List;void LinkList() //链式
{
//初始化链表
SLink *La=(SLink *)malloc(sizeof(SLink));
SLink *n1=(SLink *)malloc(sizeof(SLink));
SLink *n2=(SLink *)malloc(sizeof(SLink));
SLink *n3=(SLink *)malloc(sizeof(SLink));
SLink *n4=(SLink *)malloc(sizeof(SLink));
SLink *n5=(SLink *)malloc(sizeof(SLink));
La->next=n1;//La为头指针
n1->data=1;
n1->next=n2;
n2->data=2;
n2->next=n3;
n3->data=3;
n3->next=n4;
n4->data=4;
n4->next=n5;
n5->data=5;
n5->next=NULL;
//输出链表的值
cout<<"\t排序前:"<<endl;
SLink *p=La->next;
while(p!=NULL)
{
cout<<p->data<<endl;
p=p->next;
}
//链表逆序
p=La->next;
SLink *q=NULL;
La->next=NULL;
while(p!=NULL)
{
q=p;
p=p->next;
q->next=La->next;
La->next=q;
}
//输出逆序后链表
cout<<"\t排序后:"<<endl;
SLink *k=La->next;
while(k!=NULL)
{
cout<<k->data<<endl;
k=k->next;
}
}void SquenceList() //顺序表
{
//初始化顺序表
List La;
La.length=5;
La.data[0]=1;
La.data[1]=2;
La.data[2]=3;
La.data[3]=4;
La.data[4]=5;
//输出顺序表
int i,j,temp;
cout<<"\t排序前:"<<endl;
for(i=0;i<La.length;i++)
{
cout<<La.data[i]<<endl;
}
//逆序顺序表
for(i=0,j=La.length-1;i<j;i++,j--)
{
temp=La.data[i];
La.data[i]=La.data[j];
La.data[j]=temp;
}
cout<<"\t排序后:"<<endl;
//输出逆序后的顺序表
for(i=0;i<La.length;i++)
{
cout<<La.data[i]<<endl;
}
}int main()
{
cout<<"链式表"<<endl;
LinkList();
cout<<"顺序表:"<<endl;
SquenceList();
}
#define MAXSIZE 50
using namespace std;typedef struct node //链式结构线性表结点
{
int data;
struct node *next;
}SLink;typedef struct list //顺序结构线性表结点
{
int length;
int data[MAXSIZE];
}List;void LinkList() //链式
{
//初始化链表
SLink *La=(SLink *)malloc(sizeof(SLink));
SLink *n1=(SLink *)malloc(sizeof(SLink));
SLink *n2=(SLink *)malloc(sizeof(SLink));
SLink *n3=(SLink *)malloc(sizeof(SLink));
SLink *n4=(SLink *)malloc(sizeof(SLink));
SLink *n5=(SLink *)malloc(sizeof(SLink));
La->next=n1;//La为头指针
n1->data=1;
n1->next=n2;
n2->data=2;
n2->next=n3;
n3->data=3;
n3->next=n4;
n4->data=4;
n4->next=n5;
n5->data=5;
n5->next=NULL;
//输出链表的值
cout<<"\t排序前:"<<endl;
SLink *p=La->next;
while(p!=NULL)
{
cout<<p->data<<endl;
p=p->next;
}
//链表逆序
p=La->next;
SLink *q=NULL;
La->next=NULL;
while(p!=NULL)
{
q=p;
p=p->next;
q->next=La->next;
La->next=q;
}
//输出逆序后链表
cout<<"\t排序后:"<<endl;
SLink *k=La->next;
while(k!=NULL)
{
cout<<k->data<<endl;
k=k->next;
}
}void SquenceList() //顺序表
{
//初始化顺序表
List La;
La.length=5;
La.data[0]=1;
La.data[1]=2;
La.data[2]=3;
La.data[3]=4;
La.data[4]=5;
//输出顺序表
int i,j,temp;
cout<<"\t排序前:"<<endl;
for(i=0;i<La.length;i++)
{
cout<<La.data[i]<<endl;
}
//逆序顺序表
for(i=0,j=La.length-1;i<j;i++,j--)
{
temp=La.data[i];
La.data[i]=La.data[j];
La.data[j]=temp;
}
cout<<"\t排序后:"<<endl;
//输出逆序后的顺序表
for(i=0;i<La.length;i++)
{
cout<<La.data[i]<<endl;
}
}int main()
{
cout<<"链式表"<<endl;
LinkList();
cout<<"顺序表:"<<endl;
SquenceList();
}
2013-10-25
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询