朱颢东2015-2016学年第二学期《数据结构》实验指导书(修订版)-1(2)

2019-02-15 18:35

3.建立顺序表时可利用随机函数自动产生数据。

注意问题:

1、 插入、删除时元素的移动原因、方向及先后顺序。 2、 理解函数形参与实参的传递关系。

部分源代码: DS.h

#include #include #include #include

#define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0

typedef int Status;

SqList.h

#ifndef SQLIST_H_INCLUDED #define SQLIST_H_INCLUDED

#include \

typedef int ElemType; typedef struct {

ElemType *elem; int length; int listsize; }SqList; void menu();

Status InitList_Sq(SqList &L, int n);/*初始化顺序表*/ Status CreateList_Sq(SqList &L);/*建立顺序表*/ void PrintList_Sq(SqList L);/*输出顺序表*/

Status DeleteList_Sq(SqList &L,int i,ElemType &e);/*删除第i个元素*/ Status DeleteListX_Sq(SqList &L,ElemType x);/*删除值为x的元素*/

6

Status AdjustList_Sq(SqList &L);/*奇数排在偶数之前*/ Status OrderList_sq(SqList &L, int n);/*插入法生成递增有序表*/

void MergeList_Sq(SqList La, SqList Lb, SqList &Lc );/*两个非递减有序表A和B,并把它们合并成一个非递减有序表C*/

#endif // SQLIST_H_INCLUDED

SqList.cpp

#include \

void menu() {

printf(\ 顺序表基本操作\\n\\n\ printf(\建 立 顺 序 表\\n\ printf(\遍 历 顺 序 表\\n\ printf(\删 除 第 i 个 元 素\\n\ printf(\删 除 值 为 x 的 元 素\\n\ printf(\奇 数 排 在 偶 数 之 前\\n\ printf(\插 入 法 生 成 递 增 有 序 表\\n\

printf(\两个非递减有序表La和Lb合并成非递减有序表Lc\\n\ printf(\退 出\\n\\n\}

/*初始化顺序表*/

Status InitList_Sq(SqList &L, int n) {

L.elem=(ElemType*)malloc(n*sizeof(ElemType)); if(!L.elem) exit(OVERFLOW); L.length=0; L.listsize=n; return OK; }

/*建立顺序表*/

Status CreateList_Sq(SqList &L)

7

{

int n, i;

printf(\请输入顺序表长度:\ scanf(\ if(InitList_Sq(L, n)) {

printf(\请输入%d个元素:\ for(i = 0; i < n; i++) {

scanf(\ L.length++; } return OK; } else

return ERROR; }

/*输出顺序表*/

void PrintList_Sq(SqList L) { int i;

printf(\顺序表中元素为:\\n\ for(i = 0; i < L.length; i++) {

printf(\ }

printf(\}

/*删除第i个元素*/

Status DeleteList_Sq(SqList &L,int i,ElemType &e) {

ElemType *p, *q;

if( (i<1) || (i>L.length) ) return ERROR; p = &(L.elem[i-1]); e = *p;

8

q = L.elem+L.length-1;

}

for(++p; p <= q; ++p) *(p-1) = *p; --L.length; return OK;

/*删除值为x的元素,删除成功返回OK,删除失败返回ERROR*/ Status DeleteListX_Sq(SqList &L,ElemType x) { }

/*奇数排在偶数之前*/ Status AdjustList_Sq(SqList &L) {

ElemType *p, *q; int temp;

return OK; }

/*插入法生成递增有序表,有序表生成成功返回OK,失败返回ERROR*/ Status OrderList_sq(SqList &L, int n) {

int i, j, x; /*x表示每次待插入的元素*/ }

/*两个非递减有序表A和B,并把它们合并成一个非递减有序表C*/ void MergeList_Sq(SqList La, SqList Lb, SqList &Lc ) {

ElemType *pa, *pb, *pc, *pa_last, *pb_last; pa = La.elem; pb = Lb.elem;

Lc.listsize = Lc.length = La.length+Lb.length;

pc = Lc.elem = (ElemType *)malloc(Lc.listsize * sizeof(ElemType));

9

ElemType *p, *q;

if (!Lc.elem) exit (OVERFLOW); pa_last = La.elem + La.length - 1; pb_last = Lb.elem + Lb.length - 1; while (pa <= pa_last && pb <= pb_last) {

if (*pa <= *pb) *pc++ = *pa++; else *pc++ = *pb++; }

while(pa <= pa_last) *pc++ = *pa++; while(pb <= pb_last) *pc++ = *pb++; }

main.cpp

#include \int main() {

int choice, n, i, x; SqList L, La, Lb, Lc; while(1) {

menu();

printf(\选择你的操作:\ scanf(\ switch(choice) {

case 1:

if(CreateList_Sq(L))

printf(\顺序表创建成功\\n\ else

printf(\顺序表创建失败\\n\ break; case 2:

PrintList_Sq(L); break; case 3:

printf(\请输入删除元素的位置:\ scanf(\ if(DeleteList_Sq(L, i, x))

10


朱颢东2015-2016学年第二学期《数据结构》实验指导书(修订版)-1(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:郑东新区招商引资炼成“兵法”大揭秘!

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: