计算机软件实验报告,计算机软件实验报告.doc

CENTRAL SOUTH UNIVERSITY

实验一 线性表的基本操作

一、实验目的与基本要求

1.掌握数据结构中的一些基本概念。数据、数据项、数据元素、数据类型和数据结构,以及它们之间的关系。

了解数据的逻辑结构和数据的存储结构之间的区别与联系;数据的运算与数据的逻辑结构的关系。

掌握线性表的基本操作:插入、删除、查找以及线性表的合并等运算。

掌握运用C语言上机调试线性表的基本方法。

二、实验条件

硬件:一台微机

软件:操作系统和C语言系统

三、实验方法

确定存储结构后,上机调试实现线性表的基本运算。

四、实验内容

试编写在无头结点的单链表上实现线性表基本运算LOCATE(L,X),INSERT(L,X,1)和DELETE(L,1)的算法。

假设有两个按数据元素值递增有序排列的线性表A和B,均以单链表作为存储结构。编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许值相同)排列的线性表C,并要求利用原表(即A表和B表)结点空间存放表C。

将一个线性表中的值就地逆置。

在线性表的顺序存储结构的第一个位置上插入一个元素。

(注意区分链表和顺序表)

五、实验提示

编写一个可运行的程序,建立链表与顺序表,并由用户输入递增有序排列的链表A、链表B、顺序表的内容。最好有一定的容错功能和友好的界面。

实现实验内容的各项操作并输出操作后的表的内容。

选做:链表的排序,以实现输入非有序表也可进行内容2的要求。

六、报告要求

1、实验目的

2、实验内容

3、代码

4、调试过程中遇到的问题与解决方法

以打印稿形式于考试时上交。

七、参考代码

/*ElemType替换为需要的变量名*/

#include

typedef int ElemType

typedef struct node

{

ElemType data;

struct node *next;

}SLink;

/**********初始化线性表**********/

void InitList(SLink *sq)

{

sq=(SLink *)malloc(sizeof(SLink));

sq->next=NULL;

}

/**********求线性表长度运算**********/

int GetLength(SLink *sq)

{

int i=0;

SLink *p=sq->next;

while(p!=NULL)

{

i++;

p=p->next;

}

return i;

}

/**********求线性表中第i个元素运算**********/

SLink *GetElem(SLink *sq,int i)

{

int j=1;

SLink *p=sq->next;

if(iGetLength(sq))

return NULL;

while(j

{

p=p->next;

j++;

}

return p;

}

/**********按值查找运算**********/

SLink *Locate(SLink *sq,ElemType x,int i)

{

SLink *p=sq->next;

if(i<1||i>GetLength(sq))

return NULL;

while(p!=NULL&&p->data!=x)

p=p->next;

return p;

}

/**********插入结点运算**********/

int InsElem(SLink *sq,ElemType x,int i)

{

int j=1;

SLink *p=sq,*s;

s=(SLink *)malloc(sizeof(SLink));

s->data=x;

s->next=NULL;

if(i<1||i>GetLength(sq)+1)

return 0;

while(j

{

p=p->next;

j++;

}

s->next=p->next;

p->next=s;

return 1;

}

/**********删除结点运算**********/

int DelElem(SLink *sq,int i)

{

int j=1;

SLink *p=sq,*q;

if(i<1||i>GetLength(sq))

return 0;

while(j

{

p=p->next;

j++;

}

q=p->next;

p->next=q->next;

free(q);

return 1;

}

/*********

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值