# 第02次作业-线性表

1.题目名称

2.设计思路

3.代码截图

7-1

#include <iostream>
#define maxsize 100000
typedef int ElementType;
typedef int Postion;
using namespace std;
typedef struct{
ElementType data[maxsize];
Postion length;
}SqList;
typedef SqList *List;
void CreateSqList(List &L,ElementType a[],ElementType n); //创建顺序表
void findSqList(List &L,ElementType p,ElementType s);//查找最大序列
void DestroyList(List &L){
delete L;
}
int main(){
int i,n,p,s;
int a[maxsize];
List L;
cin>>n;
for(i=0;i<n;i++){
cin>>a[i];
}
CreateSqList(L,a,n);
findSqList(L,p,s);
DestroyList(L);
}
void CreateSqList(List &L,ElementType a[],ElementType n){
L=new SqList;
L->length=n;
for(int i=0;i<n;i++){
L->data[i]=a[i];
}
}
void findSqList(List &L,ElementType p,ElementType s){
int num[maxsize]={0},i,j,temp,maxD;
for(i=0;i<L->length;i++){
temp=i;
for(j=i+1;j<L->length;j++){
if(L->data[temp]<L->data[j]) {
num[i]++;
temp=j;
}
else break;
}
}
maxD=-1;
temp=0;
for(i=0;i<L->length;i++){
if(maxD<num[i]){
maxD=num[i];
temp=i;
}
}
p=temp;
s=maxD;
for(i=p;i<p+s;i++){
cout<<L->data[i]<<" ";
}
cout<<L->data[p+s];
}

6-2

void CreateList(List &L,int n){
List p,t,s;
L=new struct node;
L->next=NULL;
s=L;
int a;

while(n--)
{
cin>>a;
p=new struct node;
p->data=a;
p->next=s->next;
s->next=p;
s=p;
}
t=L;
L=L->next;
delete t;
}
void ReverseList(List &L){
List q,t=NULL;
while(L!=NULL){
q = L;
L = L->next;
q->next = t;
t = q;
}
L=t;
}
void PrintList(List L){
if(!L)printf("NULL");
else{
while(L->next){
cout<<L->data<<" ";
L=L->next;
}
cout<<L->data;
}

}

#### 7-1

#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct LNode    //定义单链表结点类型
{
ElemType data;
struct LNode *next;
int main()
{
InitList(L1);
InitList(L2);
InitList(L);
CreateListR(L1);
CreateListR(L2);
paixu(L1,L2,L);
DispList(L);
return 0;
}
L->next=NULL;
}
int num;
s=L;
do{
scanf("%d",&num);
if(num>=0) r->data=num;
else break;
r->next=NULL;
s->next=r;
s=r;
}while(num>=0);

}
int i;
La=L1->next; Lb=L2->next; Lc=L;
while(La&&Lb){
if(La->data>Lb->data){
Lc->next=Lb;
Lc=Lb;
Lb=Lb->next;
i=2;
}
else{
Lc->next=La;
Lc=La;
La=La->next;
i=1;
}
}
if(i=1) Lc->next=Lb;
else Lc->next=La;
}
if(!p) printf("NULL");
else{
while(p->next){
printf("%d ",p->data);
p=p->next;
}
printf("%d",p->data);
}

}

4.PTA提交列表说明

7-1

6-2

7-1

# 三、本周学习总结

## 2.谈谈你对线性表的认识？

（1）存在唯一的一个被叫做“第一个”的数据元素，存在唯一的一个被叫做“最后一个”的数据元素。
（2）除了第一个数据元素外，其它的数据元素都有一个前驱。除了最后一个数据元素外，其它的数据元素都有一个后继。
posted @ 2018-03-24 21:00  颜骏棋  阅读(148)  评论(1编辑  收藏  举报