数据结构顺序表和单链表的基本操作

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一顺序表和单链表的基本操作

一、实验目的

a)掌握线性顺序存储结构的形式与特点;

b)熟练利用顺序存储结构实现线性表的基本操作;

c)熟练掌握顺序存储结构中的算法实现;

d)掌握线性表链式存储结构的特点;

e)熟练利用链式存储结构实现线性表的基本操作;

f)熟练掌握链式存储结构中的算法实现。

二、知识准备

a)线性表顺序结构的表示;

b)顺序表的基本操作:顺序表的建立、查找、插入、删除;

c)线性表链式存储结构的表示;

d)链式表的基本操作:链式表的建立、查找、插入、删除;

链式存储结构表不能随机存取,只能设置一个指针变量,从表头逐步向

后移动来实现插入或删除数据的位置,找到后再进行具体操作。

三、实验内容

1、下面提供的程序实现的是:设有两个按元素值递增有序的顺序表la和lb,

编写程序将la表和lb表归并成一个新的递增有序的顺序表lc(值相同的元素均保留在lc表中)。*/

# include "datastru.h"

# include

void merge_sqlist(SEQUENLIST la,SEQUENLIST lb,SEQUENLIST *lc)

{

/*两有序表合并*/

int i , j , k ;

i = j = k = 1 ;

while( ____i<=st && j<=st___)//la没有到达链表尾部并且lb 也没有到达链表尾部

if( la.datas[i] <= lb.datas[j])//如果la的数据小于lb的数据

{ _____ lc->datas[k]=la.datas[i]____ ;

//就把la的数据放到lc中;注意lc是地址变量 k++ ; i++ ;}

else

{ ____lc->datas[k]=lb.datas[j]____; //否则就把lb的数据放到lc中

k++ ; j++ ;}

while( _____i<=st____ ) //如果la没有到达尾部

{ _____lc->datas[k]=la.datas[i] ____ ; //就把剩余的la数据放到lc后面

k++ ; i++;}

while( ____ j<=st ______ ) //如果lb没有到达尾部

{ ___lc->datas[k]=lb.datas[j]__ ; //就把剩余的lb数据放到lc后面

k++; j++;}

lc->last =st+st;

return;

}

main( )

{ SEQUENLIST la, lb, lc;

int i, k, m;

printf("请输入la顺序表元素,元素为整型量,用空格分开,-99为结束标志: ");

st = 0; i = 0; scanf("%d",&i);

while (i != -99) {/*输入la顺序表元素,建立有序表*/

k = st;

while((k>=1) && ( i

for(m = st; m >= k+1; m--) la.datas[m + 1] = la.datas[m];

la.datas[k + 1] = i; st++;

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

printf("\n\n请输入lb顺序表元素,元素为整型量,用空格分开,-99为结束标志:");

st = 0; i = 0; scanf("%d",&i);

while (i != -99) {/*输入lb顺序表元素,建立有序表*/

k = st;

while((k>=1) && ( i

for(m = st; m >= k+1; m--) lb.datas[m + 1] = lb.datas[m];

lb.datas[k + 1] = i; st++;

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

printf("\nla有序表元素列表:");

for (i = 1; i <= st; i++)

printf("% d",la.datas[i]);

printf("\n");

printf("\nlb有序表元素列表:");

for (i = 1; i <= st; i++)

printf("% d",lb.datas[i]);

printf("\n");

merge_sqlist (la, lb, &lc);

printf("\n合并后lc有序表元素列表:");

for (i = 1; i <= st; i++)

printf(" %d",lc.datas[i]);

printf("\n");

}

在做的过程中我所遇到的问题:发现头文件【# include "datastru.h"】

无法被系统识别?在同学的帮助下得出答案:需要将目标程序“另存为”存储为【*.cpp】格式的文件。

2、设L为带头结点的单链表,表中元素值无序,编写程序删除表中值相同的多余元素。*/

#include "datastru.h"

#include

#include

void delete1(LINKLIST *a){

相关文档
最新文档