c语言采用顺序存储结构存储串,试编写算法实现串的置换操作,数据结构上机实验报告.doc...

该博客介绍了如何通过编程实现线性表的奇偶位序元素拆分。实验目标包括掌握线性表的顺序存储和链式存储结构,以及查找、插入和删除操作。程序设计中,通过初始化线性表并输入元素,再利用循环结构将奇数位序元素插入一个新表,偶数位序元素插入另一个新表,最终展示拆分结果。经过调试,程序能够正确实现预期功能。
摘要由CSDN通过智能技术生成

数据结构上机

实验报告

谭文治

电信0801

080900120

【实验一】线性表

【实验目的】:

1.掌握线性表的两类存储结构(顺序存储结构和链式存储结构)的描述方法。

2.掌握在顺序结构中实现查找、插入、删除操作的基本方法。

3.掌握在各种链表结构中实现查找、插入、删除操作的基本方法。

【实验内容】

【1】已知线性表LA的数据元素(n个,n为偶数),现要求将LA拆开成两个新的线性表LB,LC。要求LB中的数据元素为LA中的奇数位序的数据元素(a1, a3, …, an-1),LC中的数据元素为LA中的偶数位序的数据元素(a2, a4, …, an)。

【程序设计细想】:

建立三个线性表la,lb,lc,对线性表la进行输入,然后利用循环结构对la中奇数位序的元素对lb进行插入操作,对偶数位序的元素对lc进行插入操作,从而得到线性表lb和lc。

【程序代码】:

#include

#include

#define max 600 //定义线性表的最大长度

typedef struct {

char *elem;

char list[max]; //线性表

int length; //length指示当前线性表的长度

}sqlist;

void initial(sqlist &); //初始化线性表

void insert(sqlist &,int,char); //在线性表中插入元素

void initlist(sqlist &);

void print(sqlist); //显示线性表中所有元素

void main()

{sqlist la,lb,lc; //la,lb,lc为线性表

initial(la);

initlist(lb);

initlist(lc);

int i;

for(i=0;i

{if(i%2==0) insert(lb,i/2,la.list[i]); //奇数位次元诩插入lb

else insert(lc,i/2,la.list[i]); //偶数位次元素插入lc

}

printf("\n您输入的线性表元素为:\n\n");

print(la);

printf("线性表的奇数位次的元素为:\n\n");

print(lb);

printf("线性表的偶数位次的元素为:\n\n");

print(lc);

}

void initial(sqlist &v)

{printf(" ****本程序可以实现线性表奇偶位序的元素分别输出****\n\n\n");

int i,a;

printf("请输入一个偶数作为线性表的长度:\n\n");

scanf("%d",&a);

while(a%2!=0)

{printf("\n你刚才输入的是奇数,请重新输入一偶数:\n\n");

scanf("%d",&a);}

v.length=a;

printf("\n请输入线性表的元素(个数为你输入的偶数,超过个数的元素程序不计入):\n\n");

getchar();

for(i=0;i

scanf("%c",&v.list[i]); //对la进行赋值

}

void initlist(sqlist &v) //构造一个空的线性表

{v.elem=(char *)malloc(max*sizeof(char));

v.length=0;

}

void insert(sqlist &v,int j,char c)

{v.list[j]=c; //插入c

v.length++;

}

void print(sqlist v)

{int i;

for(i=0;i

{printf("%c",v.list[i]);} //输出线性表元素

printf("\n\n");

}

【调试和运行】

经过调试运行,程序均得到正确结果,例如输入9个元素adjfhres得到结果如下图:

【收获与体会】:

通过这个程序的设计我加深了对线性表基本操作的理解与掌握,对线性表的初

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值