线性表的链式存储结构 - 范文中心

线性表的链式存储结构

04/21

贵州大学实验报告

学院:计算机科学与信息学院 专业: 班级:

程序清单如下:

// 实验二-链表.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"

#include

#include

#include

using namespace std;

typedef int ElemType;

struct LNode

{

ElemType data;

LNode* next;

};

//初始化链表

void InitList(LNode* &HL)

{

HL->next =NULL;

}

//判断输入的数据是否为整型

int JudgeData()

{

char c[100];

Judge:

cin>>c;

if(strcmp(c,"no")==0)

return(-879);

else if(c[0]=='-'||c[0]>='0'&&c[0]

{

for(int i=1;c[i]!='\0';i++)

{

if(c[i]'9')

{

cout

cout

goto Judge;

}

}

return atoi(c);

else

{

cout

cout

goto Judge;

}

}

//输入相应的操作

char JudgeOperation()

{

char c[100];

judge:

cin>>c;

if(strlen(c)==1)

{

if(c[0]'8')

{

cout

goto judge;

}

}

else

{

cout

goto judge;

}

return (c[0]);

}

//为链表录入数据

void InputList(LNode* &HL)

{

int i=0;

LNode* ap,*cp;

ap=HL;

while(1)

{

i++;

cout

if(item==-879) ; "

cout

break;

}

else

{

cp=new LNode;

ap->next =cp;

cp->data =item;

ap=cp;

}

}

ap->next=NULL;

}

//显示链表所有信息

void DisplayList(LNode* HL)

{

int i=0;

LNode* cp=HL->next;

while(cp!=NULL)

{

i++;

coutdata

cp=cp->next;

}

cout

cout

}

//查找元素和位置

void FindList(LNode* HL,ElemType item, int pos)

{

LNode* cp=HL->next;

if(pos

{

cout

return;

}

else if(pos==-1)

{

pos=1;

while(cp->next!=NULL)

{

pos++;

cp=cp->next;

}

}

else if(pos==0)

{

pos=1;

while(cp!=NULL)

{

if(cp->data==item)

break;

else

{

pos++;

cp=cp->next;

}

}

if(cp==NULL)

{

cout

return;

}

}

else

{

int i=1;

while(cp!=NULL)

{

if(i==pos) break;

else cp=cp->next;

i++;

}

if(cp==NULL)

{

cout

}

}

coutdata

}

//向链表中插入元素

void InsertList(LNode* &HL,ElemType item,int pos)

{

LNode* ap,*cp,*tp; cp=HL->next; ap=HL; if(posnext; } } else if(pos==0) { pos=1; while(cp!=NULL) { if(item data) break; else { ap=cp; cp=cp->next; } pos++; } } else { int i=0; while(cp!=NULL) { i++; if(i==pos) break; else { ap=cp; cp=cp->next;

}

}

if(i+1

{

cout

return;

}

}

tp=new LNode;

tp->data=item;

if(pos==1)

{

HL->next=tp;

tp->next=cp;

}

else

{

ap->next=tp;

tp->next=cp;

}

cout

}

//删除链表中的元素

void DeleteList(LNode* &HL,ElemType item,int pos)

{

LNode* ap,*cp;

cp=HL->next;

ap=HL;

if(pos

{

cout

}

else if(pos==-1)

{

pos=1;

while(cp->next!=NULL)

{

pos++;

ap=cp;

cp=cp->next;

}

}

else if(pos==0) { pos=1; while(cp!=NULL) { if(cp->data==item) break; else { pos++; ap=cp; cp=cp->next; } } if(cp==NULL) { coutnext; } } if(cp==NULL) { coutnext=cp->next; else ap->next=cp->next; ElemType tem=cp->data; delete cp;

cout

}

//清空链表

void EmptyList(LNode* &HL)

{

LNode* tem;

LNode* cp=HL->next;

if(HL->next==NULL)

cout

else

{

while(cp!=NULL)

{

tem=cp;

cp=cp->next;

delete tem;

}

HL->next=NULL;

cout

}

}

//排序链表

void SortList(LNode* &HL)

{

LNode*tem,*cp;

tem=new LNode;

cp=HL->next;

tem->next=NULL;

while(cp!=NULL)

{

InsertList(tem,cp->data,0);

cp=cp->next;

}

EmptyList(HL);

cout

HL=tem;

}

//操作菜单

void Menu()

{

LNode* h;

h=new LNode;

InitList(h);

ElemType item;

int pos;

menu:

cout

cout

cout

cout

cout

cout

cout

cout

cout

cout

switch(JudgeOperation())

{

case '1':

InputList(h);

cout

goto menu;

case '2':

if(h->next==NULL)

{cout

cout

cout

cout

cout

switch(JudgeOperation())

{

case '1':

cout

item=JudgeData();

FindList(h,item,0);

goto Find;

case '2':

cout

FindList(h,0,pos);

goto Find; ; "

case '3': cout

cout

goto Find;

}

case '3':

if(h->next==NULL)

{cout

cout

cout

cout

cout

switch(JudgeOperation())

{

case '1':

cout

item=JudgeData();

InsertList(h,item,0);

goto Insert;

case '2':

cout

pos=JudgeData();

cout

InsertList(h,item,pos);

goto Insert;

case '3':

cout

goto menu;

default:

cout

goto Insert;

}

case '4':

if(h->next==NULL)

{cout

cout

cout

cout

cout

switch(JudgeOperation()) { case '1': coutnext==NULL) {coutnext==NULL) {cout>c; if(strlen(c)==1) { if(c[0]=='n')

{

cout

goto menu;

}

else if(c[0]!='y'&&c[0]!='n')

{

cout

}

}

else

{

cout

}

break;

}

}

int _tmain(int argc, _TCHAR* argv[])

{

Menu();

return 0;

}


相关内容

  • [数据结构]期末考试题及答案
    2011-2012学年第一学期期末考查 <数据结构>试卷 (答案一律写在答题纸上,在本试卷上做答无效) 一.选择(每题1分,共10分) 1. 长度为n 的线性表采用顺序存储结构,一个在其第i 个位置插入新元素的算法时间复杂度为( ...
  • 线性表及其应用实验报告
    数据结构实验报告 实验名称:线性表及其应用 班 级:12级电气本2 学 号:2012081227 姓 名:赵雪磊 指导教师:梁海丽 日 期:2013年9月9日 数学与信息技术学院 一. 实验目的 1.掌握线性表的概念,理解线性表的顺序.链式 ...
  • 线性表顺序存储结构
    线性表顺序存储结构 所用的教材是:<数据结构与算法>第四版 廖明宏 郭福顺 张岩 李秀坤老师编著的 线性结构中线性表分为三种:数组存储结构.链式存储结构以及游标存储结构 这一部分先讲解线性表的数组存储结构: 1.线性表的数组存储 ...
  • 数据结构导论试题1
    全国2004年10月高等教育自学考试 1.要将现实生活中的数据转化为计算机所能表示的形式,其转化过程依次为( ) A.逻辑结构.存储结构.机外表示 B.存储结构.逻辑结构.机外表示 C.机外表示.逻辑结构.存储结构 D.机外表示.存储结构. ...
  • 数据结构试验报告-文学研究助手
    实验报告:文学研究助手 题目:编写一个统计特定单词在文本中出现的次数和位置的程序 一. 需求分析 1. 文本串非空并以文件的形式存放在根目录中,统计匹配的词非空.文件名和需要匹配的词集均有用户从键盘输入: 2. 单词都是由某种类型字符的序列 ...
  • 东南大学数据结构 93-20**年
    东南大学93考研题 注意事项 : (1) 答卷上需写清题号,不必抄题 (2) 描述可用你熟悉的一种类高级语言,如类Pascal ,所用主要数据结构及变量的意义须加以注释.必要时算法中应加注释 . 一.回答下列问题 : (共 35分) l 与 ...
  • 物流实验室实训报告
    物流实验室实践报告 课题名称:物流实验室参观报告 学院系别: 指导老师: 专业:工商管理 班级:12级工商2班 组号:1组 成员: 时间:2014年12月12日(第15周)上午9.30-10.20 地点:七系教学楼A201物流实验室 一.序 ...
  • 非线性光学晶体现状及发展趋势
    非线性光学晶体现状及发展趋势作者: 赵斌 沈德忠.王晓洋.陈建荣 (中材人工晶体研究院) 前言 非线性光学晶体是重要的光电信息功能材料之一,是光电子技术特别是激光技术的重要物质基础,其发展程度与激光技术的发展密切相关. 非线性光学晶体材料可 ...
  • 毕业论文直线振动输送机的设计
    目 录 摘 要 ........................................................................ 1 前 言 ................................. ...
  • 数据结构实验
    1. 编程实现在顺序存储的有序表中插入一个元素(数据类型为整型). #include #include #include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 ...