数据结构顺序表与单链表的建立.docVIP

  • 6
  • 0
  • 约5.92千字
  • 约 11页
  • 2019-02-17 发布于湖北
  • 举报
封面: 安徽大学 网络工程 数据结构顺序?表与单链表的?建立 ——2012/4/7 一 实验目的 1.熟练掌握线性?表的基本操作?在顺序存储和?链式存储上的?实现。 2.以线性表的各?种操作(建立、插入、删除、遍历等)的实现为重点?。 3.通过本章实验?加深对c语言?的使用(特别是函数的?参数调用、指针类型的应?用 和链表的建立?等各种基本操?作)。 二 实验内容 1. 顺序表的基本?操作的实现.包括: (1).顺序表的类型?定义; (2).创建一个元素?为1,10,9,5的顺序表; (3) .向(2)中表的指定位?置插入一个元?素; (4).删除(3)中顺序表中指?定位置的元素?; (5).依次输出(2)~(4)顺序表中的元?素. 2. 链表的基本操?作的实现.包括: (1).链表的类型定?义; (2).创建一个元素?为5,-4,9,10,3的链表; (3) .向(2)表中指定位置?插入一个元素?; (4).删除(3)表中指定位置?的元素; (5).依次输出(2)~(4)表中的元素. 三、实验步骤 1.本实验用到的?数据结构 (1)逻辑结构:线性结构 (2)存储结构;顺序存储结构?,链式存储结构? 2.各程序的功能?和算法设计思?想 程序一 // 数据结构实验?.cpp : 定义控制台应?用程序的入口?点。 // #includ?e stdafx?.h #includ?e malloc?.h #includ?e stdio.h #includ?e proces?s.h # define? OK 1 # define? ERROR 0 # define? OVERFL?OW -2 # define? LISTIN?ITSIZE? 100 # define? LISTIN?CREMEN?T 10 typede?f int status?; typede?f struct? { int * elem; int length?; int listsi?ze; }sqlist?; void Initli?st (sqlist? *l) { (*l).elem= (int*)malloc?(LISTIN?ITSIZE? * sizeof?(int)); if(!(*l).elem) exit (OVERFL?OW); (*l).length?=0; (*l).listsi?ze=LISTIN?ITSIZE?; } status? ListIn?sert (sqlist? *l, int i, int h) { int *newbas?e,*q,*p; if (i1|| i(*l).length?+1) { printf?(插入位置不合?法!\n); return? ERROR; } if ((*l).length?= (*l).listsi?ze) { newbas?e = (int *)reallo?c((*l).elem , ((*l).listsi?ze + LISTIN?CREMEN?T) * sizeof?(int)); if (! newbas?e) exit (OVERFL?OW); (*l).elem = newbas?e; (*l).listsi?ze+=LISTIN?CREMEN?T; } q =(*l).elem + i-1; for (p=(*l).elem + (*l).length?-1;p=q;--p) { *(p+1)=*p; } *q=h; ++(*l).length?; return? OK; } status? Getele?m(sqlist? l, int i,int *e) { if (i1||(il.length?)) { printf?(输入位置不合?法!\n); return? ERROR; } *e= *(l.elem +i-1); printf?(第%d个元素的值?是:%d\n,i,*e); printf?(\n); return? OK; } status? ListDe?lete(sqlist? *l, int i) { int *p,*q; if (i1||i((*l).length?)) { printf?(删除元素位置?不合法!\n); return? ERROR; } p = (*l).elem+i-1; printf?(删除第%d个元素%d\n,i,*p); q= (*l).elem

文档评论(0)

1亿VIP精品文档

相关文档