数据结构实验报告 下载本文

数 据 结 构 实 验 报 告

1000实验一 顺序表的删除

Description

实现一个线性表,对一个n不超过1000的线性表进行删除操作。

Input

第一行有一个整数n,表示线性表的大小,第二行有n个整数,分别是list1,list2...listn。第三行有一个整数q,表示q次删除操作,接下来q行,每行有一个整数k,表示删除线性表中第k个元素。(输入有多组测试数据,以EOF结束)

Output

对于每次删除操作输出一行,如果k不合法(k大于n或者k为0),输出 -1, 否则输出删除的元素。

Sample Input

5 3 2 1 5 4 3 5 5 2

Sample Output

4 -1 2

#include

void sq_delete(int list[],int n,int j,int k[]){ int i,t;

for(i=0;in||k[i]<=0) printf(\else{

printf(\ for(t=k[i];t

n--;} } }

int main(){

int z,n,list[1024],j,k[1024]; scanf(\ for(z=0;z

for(z=0;z

运行结果:

1001实验二 链表及其多项式相加

Description

通过有序对输入多项式的各个项,利用单链表存储该一元多项式,并建立的2个存储一元多项式的单链表,然后完成2个一元多项式的相加,并输出相加后的多项式。

Input

输入数据有多组,对于每组测试数据,第一行一个整数n,表示第一个多项式La的项数;接下来n行,每行表示多项式的一项,包含两个元素,表示系数和指数;接下来一个整数m,表示第二个多项式Lb的项

数;接下来m行,每行表示多项式的一项,包含两个元素,表示系数和指数;两个多项式的输入都是按指数从小到大。(n,m<=1000)

Output

La与Lb相加之后的多项式。

按指数从小到大输出,每行一项,用空格把系数和指数分开。

Sample Input

3 1 2 2 3 3 4 3 4 3 2 5 4 6

Sample Output

1 2 6 3 3 4 2 5 4 6

#include #include struct jiegou {

int shu,zhishu; struct jiegou *next; } *a,*b,*c; void shuru() {

jiegou *p,*q; int i,j,n,m,c,d; scanf(\

p=a=(struct jiegou *)malloc(sizeof(jiegou)); for(i=0;i

q=(struct jiegou *)malloc(sizeof(jiegou)); scanf(\ q->shu=d; q->zhishu=c; p->next=q; p=q; }

p->next=NULL; scanf(\

p=b=(struct jiegou *)malloc(sizeof(jiegou)); for(i=0;i