文档库 最新最全的文档下载
当前位置:文档库 › 单链表的各种基本运算的实现

单链表的各种基本运算的实现

单链表的各种基本运算的实现
单链表的各种基本运算的实现

软件技术基础实验

——单链表的各种基本运算的

实现

班级

学号

姓名

●实验题目:

编写一个程序,实现单链表的各种基本运算,并在此基础上设计一个主程序完成如下功能:

1)初始化单链表

2)依次采用尾插法插入a,b,c,d,e元素

3)输出单链表

4)在第四个元素位置上插入f元素

5)删除该单链表的第三个元素

●实验目的:

1.掌握线性表链式存储的方法及基本操作;

2.熟悉C++语言及其基本操作并学会用其编程;

3.掌握将算法在VC++6.0语言环境下实现的过程。

●调试通过的实验代码:

#include "stdafx.h"

#include

#include

struct link

{ char data;

link *next;

}; //结点定义

link *rcreat(link *head,char x)

{ link *s,*r;

r=head;

s=new link;

s->data=x;r->next=s;r=s;

r->next=NULL;return r;

} //尾插建立

link *locate(link *head,char x)

{ link *p;

p=head->next;

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

return p;

} //查找x的地址

link *get(link *head,int i)

{ int j;

link *p;

j=1;p=head->next ;

while((j

{j++;p=p->next;}

return p;

} //查找第i个元素的地址

void insert(link *head,int num,char y)

{ link *p,*s;

s=new link;s->data=y;

if(head->next==NULL)

{head->next=s;s->next=NULL;} p=get(head,num);

if(p==NULL) cout<<"插入位置非法";

else

{s->next=p->next;p->next=s;}

} //元素y之后插入x

void delet(link *head,char x)

{ link * p, * q;

q=head;p=head->next;

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

{q=p;p=p->next;}

if(p==NULL) cout<<"要删除的元素不存在";

else

{q->next=p->next;delete(p);}

} //元素x删除

void print(link *head)

{ link *p;

p=head->next;

while(p->next!=NULL)

{cout<data<<"->";p=p->next;} cout<data<

} //输出单链表

void main(int argc, char* argv[]) //主函数{

link *head,*p,*q,*r;char x,y;int num,shan,i=1,j=1;

head=new link;

head->next=NULL;

r=head;

while(j<=5)

{

cout<<"请输入要插入的元素:";

cin>>x;

r=rcreat(r,x);

j=j+1;}

print(head);

cout<<"请输入要插入的元素的位置及元素:";

cin>>num;cin>>y;

insert(head,num,y);

cout<<"插入后的链表如下:"<

print(head);

cout<<"请输入要删除元素的位置";

cin>>shan;

q=head;p=head->next;

while(i

{

q=p;p=p->next;i=i+1;

}

q->next=p->next;delete (p);

cout<<"删除后的链表如下:"<

print(head);

}

实验结果截图:

说明:

(1)本程序实现动态输入建立单链表,并将建好的单链表输出(2)实现元素的插入,并将插入后的单链表输出

(3)实现元素的删除,并输出删除后的单链表

excel表格的基本操作快捷指令

excel表格的基本操作 Excel 快捷键和功能键 Ctrl 组合快捷键 按键说明 Ctrl+( 取消隐藏选定范围内所有隐藏的行。 Ctrl+) 取消隐藏选定范围内所有隐藏的列。 Ctrl+& 将外框应用于选定单元格。 Ctrl+_ 从选定单元格删除外框。 Ctrl+~ 应用“常规”数字格式。 Ctrl+$ 应用带有两位小数的“货币”格式(负数放在括号中)。 Ctrl+% 应用不带小数位的“百分比”格式。 Ctrl+^ 应用带有两位小数的“指数”格式。 Ctrl+# 应用带有日、月和年的“日期”格式。 Ctrl+@ 应用带有小时和分钟以及AM 或PM 的“时间”格式。 Ctrl+! 应用带有两位小数、千位分隔符和减号(-)(用于负值)的“数值”格式。Ctrl+- 显示用于删除选定单元格的“删除”对话框。 Ctrl+* 选择环绕活动单元格的当前区域(由空白行和空白列围起的数据区域)。在数据透视表中,它将选择整个数据透视表。 Ctrl+: 输入当前时间。 Ctrl+; 输入当前日期。 Ctrl+` 在工作表中切换显示单元格值和公式。 Ctrl+' 将公式从活动单元格上方的单元格复制到单元格或编辑栏中。 Ctrl+" 将值从活动单元格上方的单元格复制到单元格或编辑栏中。 Ctrl++ 显示用于插入空白单元格的“插入”对话框。 Ctrl+1 显示“单元格格式”对话框。 Ctrl+2 应用或取消加粗格式设置。 Ctrl+3 应用或取消倾斜格式设置。 Ctrl+4 应用或取消下划线。 Ctrl+5 应用或取消删除线。 Ctrl+6 在隐藏对象、显示对象和显示对象占位符之间切换。 Ctrl+7 显示或隐藏“常用”工具栏。 Ctrl+8 显示或隐藏大纲符号。 Ctrl+9 隐藏选定的行。 Ctrl+0 隐藏选定的列。 Ctrl+A 选择整个工作表。 如果工作表包含数据,则按Ctrl+A 将选择当前区域。再次按Ctrl+A 将选择整个工作表。 当插入点位于公式中某个函数名称的右边时,则会显示“函数参数”对话框。

实现单链表的各种基本运算

实现单链表的各种基本运算 一、实验目的 了解单链表表的结构特点及有关概念,掌握单链表的各种基本操作算法思想及其实现。 二、实验内容 编写一个程序,实现顺序表的各种基本运算: 1、初始化单链表; 2、单链表的插入; 3、单链表的输出; 4、求单链表的长度 5、判断单链表是否为空; 6、输出单链表的第i位置的元素; 7、在单链表中查找一个给定元素在表中的位置; 8、单链表的删除; 9、释放单链表 三、算法思想与算法描述简图

主函数main void InitList(LinkList*&L) 初始化单链表L void DestroyList(LinkList*&L)//释放单链表L int ListEmpty(LinkList*L)//判断单链表L是否为空集 int Listlength(LinkList*L)//返回单链表L的元素个数 void DispList(LinkListt*L)//输出单链表L int GetElem(LinkList*L,int i,char e)/*ElemType e)获 取单链表L中的第i个元素*/ int LocateEmpty(LinkList*L,char e)/*ElemType e)在单 链表L中查找元素e*/ int ListInsert(LinkList*&L,int i,char e)/*ElemType e) 在单链表中第i个位置上插入元素e*/ int ListDelete(LinkList*&L,int i,char &e)/*ElemType e)在单链表L中删除第i个元素*/

四、实验步骤与算法实现 #include #include typedef char ElemType; typedef struct LNode//定义单链表 { ElemType data; struct LNode *next; }LinkList; void InitList(LinkList*&L) { L=(LinkList*)malloc(sizeof(LinkList));//创建头结点 L->next=NULL;//头结点赋值为空 } void DestroyList(LinkList*&L)//销毁单链表(释放单链表L占用的内存空间即逐一释放全部结点的空间) { LinkList*p=L,*q=p->next; while(q!=NULL) {free(p); p=q; q=p->next;} free(p); } int ListEmpty(LinkList*L)//判线性表是否为空表ListEmpty(L) { return(L->next==NULL);}//若单链表L没有数据结点,则返回真,否则返回假。 int ListLength(LinkList*L)//求线性表的长度ListLength(L) { LinkList*p=L;int i=0; while(p->next!=NULL)

实验二 链表操作实现

实验二链表操作实现 实验日期: 2017 年 3 月 16 日 实验目的及要求 1. 熟练掌握线性表的基本操作在链式存储上的实现; 2. 以线性表的各种操作(建立、插入、删除、遍历等)的实现为重点; 3. 掌握线性表的链式存储结构的定义和基本操作的实现; 4. 通过本实验加深对C语言的使用(特别是函数的参数调用、指针类型的应用)。 实验容 已知程序文件linklist.cpp已给出学生身高信息链表的类型定义和基本运算函数定义。 (1)链表类型定义 typedef struct { int xh; /*学号*/ float sg; /*身高*/ int sex; /*性别,0为男生,1为女生*/ } datatype; typedef struct node{ datatype data; /*数据域*/ struct node *next; /*指针域*/ } LinkNode, *LinkList; (2)带头结点的单链表的基本运算函数原型 LinkList initList();/*置一个空表(带头结点)*/ void createList_1(LinkList head);/*创建单链表*/ void createList_2(LinkList head);/* 创建单链表*/ void sort_xh(LinkList head);/*单链表排序*/ void reverse(LinkList head);/*对单链表进行结点倒置*/ void Error(char *s);/*自定义错误处理函数*/ void pntList(LinkList head);/*打印单链表*/ void save(LinkList head,char strname[]);/*保存单链表到文件*/

实验二 单链表的基本算法

实验二单链表的基本算法一.实验目的: 通过上机编程掌握 1.生成单链表的基本算法; 2.在单链表上的插入、删除运算。 二.实验要求: 1. 给出程序设计的基本思想、原理和算法描述。 2. 画出程序流程图;根据数据结构有关知识编出算法程序; 3. 源程序给出注释; 4. 保存和打印出程序的运行结果,并结合程序进行分析。 三.实验内容: 1.编写函数实现单链表的基本运算: (1)单链表的生成 (2)单链表的插入 (3)单链表的删除 2.编写主函数测试单链表的各种基本运算: (1)生成一个至少包含有5个元素的单链表,元素值由计算机输入 (2)在表中的第5个位置上插入元素”7” (3)删除表中的第6个元素 (4)显示(1)—(3)每一步的操作结果

实验原理:首先建立头结点,形成一个单链表,通过malloc函数创建新的结点单元,将要读取的数据赋值给新结点。其次插入链表,从头结点开始依次延指针域查找需要插入的结点,为插入数据元素x生成一个新结点s,将x插入在s和s-1之间。最后链表结点删除,找到指定结点的前趋结点通过改变连接完成删除。 源程序: #include #include typedef int datatype; typedef struct node/*结构体更名为NODE*/ { datatype data; struct node *next; }NODE; NODE *creatlink() /*建立带头结点的单链表*/ { NODE *head,*s ,*p; int x; head=(NODE*)malloc(sizeof(NODE)); /*生成一个NODE型新结点并赋值给head*/ p=head; scanf("%d",&x); while(x!=0) { s=(NODE*)malloc(sizeof(NODE)); /*生成一个NODE型新结点并赋值给s*/

数据结构 单链表基本操作代码

实验一单链表 #include "stdio.h" #include "stdlib.h" typedef int ElemType; typedef struct LNode { ElemType data; struct LNode *next; }LNode,*LinkList; void creatLNode(LinkList &head) { int i,n; LNode *p; head=(LNode*)malloc(sizeof(LNode)); head->next=NULL; printf("请输入链表的元素个数:"); scanf("%d",&n); for(i=n;i>0;i--) { p=(LNode*)malloc(sizeof(LNode)); printf("第%d个元素:",i); scanf("%d",&p->data); p->next=head->next; head->next=p; } } void InsertLNode(LinkList &L) { LNode *p=L; int i,j=0,e; printf("请输入你要插入的位置(超过链表长度的默认插在最后!):"); scanf("%d",&i); printf("请输入你要插入的元素:"); scanf("%d",&e); while (p->next&&jnext; ++j; }

LNode *s; s=(LNode*)malloc(sizeof(LNode)); s->data=e; s->next=p->next; p->next=s; } int DeleteLNode(LinkList &L,int i,int &e) { LNode *p; p=L; LNode *q; int j=0; while (p->next&&jnext; ++j; } if(!(p->next)||j>i-1) { printf("删除位置不合理!\n"); return 0; } q=p->next; p->next=q->next; e=q->data; free(q); return e; } void DeleteCF(LinkList &L) { LNode *p,*s,*r; p=L->next; while(p!=NULL) { r=p; s=r->next; while(s!=NULL) { if(p->data==s->data) { r->next=s->next; s=s->next;

线性表顺序存储结构上的基本运算

实验项目名称:线性表的顺序存储结构上的基本运算 (所属课程:数据结构--用C语言描述) 院系:计算机科学与信息工程学院专业班级:网络工程 姓名:000000 学号:0000000000 实验日期:2016.10.20 实验地点:A-06 406 合作者:指导教师:孙高飞 本实验项目成绩:教师签字:日期: (以下为实验报告正文) 一、实验目的 本次实验的目的掌握顺序表的存储结构形式及其描述和基本运算的实现;掌握动 态链表结构及相关算法设计 实验要求:输入和验证程序例题。正确调试程序,记录程序运行结果。完成实验报 告。 二、实验条件 Windows7系统的电脑,vc++6.0软件,书本《数据结构--用c语言描述》 三、实验内容 3.1 根据41页代码,用c语言定义线性表的顺序存储结构。 3.2 根据42页算法2.1实现顺序表的按内容查找。 3.3 根据43页算法2.2实现顺序表的插入运算。 3.4 根据45页算法2.3实现顺序表的删除运算。 四、实验步骤 3.2实验步骤 (1)编写头文件,创建ElemType。 (2)根据根据41页代码,“用c语言定义线性表的顺序存储结构”定义顺序表。

(3)根据42页算法2.1实现顺序表的按内容查找,创建Locate函数。 (4)创建main函数,输入SeqList L的数据元素。 (5)输入要查找的数据元素的值,调用Locate函数,输出结果。 3.3实验步骤 (1)编写头文件,创建ElemType。 (2)根据41页代码,“用c语言定义线性表的顺序存储结构”定义顺序表。 (3)根据43页算法2.2实现顺序表的插入运算,创建InsList函数。 (4)创建printList函数,逐项输出顺序表内的元素及顺序表元素的个数。 (5)创建main函数,输入插入的元素和其位置,调用printLinst函数输出顺序表,调用IntList函数,再次调用printLinst函数输出顺序表。 3.4实验步骤 (1)编写头文件,创建ElemType。 (2)根据根据41页代码,“用c语言定义线性表的顺序存储结构”定义顺序表。 (3)根据45页算法2.3实现顺序表的删除运算,创建DelList函数。 (4)创建printList函数,逐项输出顺序表内的元素及顺序表元素的个数。 (5)创建main函数,输入删除元素的位置,调用printLinst函数输出顺序表,调用DelList函数,再次调用printLinst函数输出顺序表。 五、实验结果 (1)实验3.2顺序表的按内容查找 # include typedef int Elemtype; typedef struct{ Elemtype elem[100]; int last; }SeqList; int Locate(SeqList L,Elemtype e){ int i; i=0;

单链表的基本操作

上机实验报告 学院:计算机与信息技术学院 专业:计算机科学与技术(师范)课程名称:数据结构 实验题目:单链表建立及操作 班级序号:师范1班 学号:201421012731 学生姓名:邓雪 指导教师:杨红颖 完成时间:2015年12月25号

一、实验目的: (1)动态地建立单链表; (2)掌握线性表的基本操作:求长度、插入、删除、查找在链式存储结构上的实现; (3)熟悉单链表的应用,明确单链表和顺序表的不同。 二、实验环境: Windows 8.1 Microsoft Visual c++ 6.0 三、实验内容及要求: 建立单链表,实现如下功能: 1、建立单链表并输出(头插法建立单链表); 2、求表长; 3、按位置查找 4、按值查找结点; 5、后插结点; 6、前插结点 7、删除结点; 四、概要设计: 1、通过循环,由键盘输入一串数据。创建并初始化一个单链表。 2、编写实现相关功能函数,完成子函数模块。 3、调用子函数,实现菜单调用功能,完成顺序表的相关操作。

五、代码: #include #include typedef char datatype; typedef struct node { datatype data; struct node *next; }linklist; linklist *head,*p; //头插法建立单链表 linklist *Creatlistf() { char ch; linklist *head,*s; head=NULL; ch=getchar(); printf("请输入顺序表元素(数据以$结束):\n"); while(ch!='$') { s=(linklist *)malloc(sizeof(linklist)); s->data=ch; s->next=head; head=s; ch=getchar(); } return head; } //求单链表的长度 void get_length(struct node *head) { struct node *p=head->next; int length=0;

实现顺序表各种基本运算的算法

实现顺序表各种基本运算的算法 要求:编写一个程序(algo2_1.cpp)实现顺序表的各种基本操作,并在此基础上设计一个主程序(exp2_1.cpp)完成如下功能: (1)初始化顺序表L (2)依次采用尾插法插入a,b,c,d,e元素 (3)输出顺序表L (4)输出顺序表L的长度 (5)判断顺序表L是否为空 (6)输出顺序表L的第3个元素 (7)输出元素a的位置 (8)在第4个元素位置上插入f元素 (9)输出顺序表L (10)删除L的第3个元素 (11)输出顺序表L (12)释放顺序表L /*文件名:exp2-1.cpp*/ #include #include #define MaxSize 50 typedef char ElemType; typedef struct { ElemType elem[MaxSize]; int length; } SqList; extern void InitList(SqList *&L); extern void DestroyList(SqList *L); extern int ListEmpty(SqList *L); extern int ListLength(SqList *L); extern void DispList(SqList *L); extern int GetElem(SqList *L,int i,ElemType &e); extern int LocateElem(SqList *L, ElemType e); extern int ListInsert(SqList *&L,int i,ElemType e); extern int ListDelete(SqList *&L,int i,ElemType &e); void main() { SqList *L; ElemType e; printf("(1)初始化顺序表L\n"); InitList(L); printf("(2)依次采用尾插法插入a,b,c,d,e元素\n"); ListInsert(L,1,'a'); ListInsert(L,2,'b');

链表基本操作实验报告

实验2 链表基本操作实验 一、实验目的 1.定义单链表的结点类型。 2.熟悉对单链表的一些基本操作和具体的函数定义。 3.通过单链表的定义掌握线性表的链式存储结构的特点。 二、实验内容与要求 该程序的功能是实现单链表的定义和主要操作。如:单链表建立、输出、插入、删除、查找等操作。该程序包括单链表结构类型以及对单链表操作的具体的函数定义和主函数。程序中的单链表(带头结点)结点为结构类型,结点值为整型。 要求: 同学们可参考指导书实验2程序、教材算法及其他资料编程实现单链表相关操作。必须包括单链表创建、输出、插入、删除操作,其他操作根据个人情况增减。 三、算法分析与设计。 1.创建单链表: 头结点L

...... 2.单链表插入

s s->data=x; s->next=p->next; p->next=s; 3.单链表的删除: p->next=p->next->next;

四、运行结果 1.单链表初始化 2.创建单链表 3.求链表长度 4.检查链表是否为空 5.遍历链表 6.从链表中查找元素 7.从链表中查找与给定元素值相同的元素在顺序表中的位置

8.向链表中插入元素 插入元素之后的链表 9.从链表中删除元素 删除位置为6的元素(是3) 10.清空单链表 五、实验体会 经过这次单链表基本操作实验,自己的编程能力有了进一步的提高,认识到自己以前在思考一个问题上思路不够开阔,不能灵活的表达出自己的想法,虽然在打完源代码之后出现了一些错误,但是经过认真查找、修改,最终将错误一一修正,主要是在写算法分析的时候出现了障碍,经过从网上查找资料,自己也对程

实现顺序表的各种基本运算

实现顺序表的各种基本运算 一、实验目的 了解顺序表的结构特点及有关概念,掌握顺序表的各种基本操作算法思想及其实现。 二、实验内容 编写一个程序,实现顺序表的各种基本运算: 1、初始化顺序表; 2、顺序表的插入; 3、顺序表的输出; 4、求顺序表的长度 5、判断顺序表是否为空; 6、输出顺序表的第i位置的个元素; 7、在顺序表中查找一个给定元素在表中的位置; 8、顺序表的删除;9、释放顺序表 三、算法思想与算法描述简图

四、实验步骤与算法实现 #include<> #include<> #define MaxSize 50 typedef char ElemType; typedef struct {ElemType data[MaxSize]; int length; }SqList;//顺序表类型的定义 void InitList(SqList*&L)//初始化顺序表L {L=(SqList*)malloc(sizeof(SqList)); L->length=0; } void DestroyList(SqList*&L)//释放顺序表L {free(L); } int ListEmpty(SqList*L)//判断顺序表L是否为空集{return(L->length==0); } int Listlength(SqList*L)//返回顺序表L的元素个数{return(L->length); } void DispList(SqList*L)//输出顺序表L {int i; if(ListEmpty(L))return; for(i=0;ilength;i++) printf("%c",L->data[i]);

Excel表格的基本操作教程

ExcelExcel表格的基本操作教程系列 也许你已经在Excel中完成过上百张财务报表,也许你已利用Excel函数实现过上千次的复杂运算,也许你认为Excel也不过如此,甚至了无新意。但我们平日里无数次重复的得心应手的使用方法只不过是Excel全部技巧的百分之一。本专题从Excel中的一些鲜为人知的技巧入手,领略一下关于Excel的别样风情。 一、让不同类型数据用不同颜色显示 在工资表中,如果想让大于等于2000元的工资总额以“红色”显示,大于等于1500元的工资总额以“蓝色”显示,低于1000元的工资总额以“棕色”显示,其它以“黑色”显示,我们可以这样设置。 1.打开“工资表”工作簿,选中“工资总额”所在列,执行“格式→条件格式”命令,打开“条件格式”对话框。单击第二个方框右侧的下拉按钮,选中“大于或等于”选项,在后面的方框中输入数值“2000”。单击“格式”按钮,打开“单元格格式”对话框,将“字体”的“颜色”设置为“红

色”。 2.按“添加”按钮,并仿照上面的操作设置好其它条件(大于等于1500,字体设置为“蓝色”;小于1000,字体设置为“棕色”)。 3.设置完成后,按下“确定”按钮。 看看工资表吧,工资总额的数据是不是按你的要求以不同颜色显示出来了。 六、让数据按需排序 如果你要将员工按其所在的部门进行排序,这些部门名称既的有关信息不是按拼音顺序,也不是按笔画顺序,怎么办?可采用自定义序列来排序。 1.执行“格式→选项”命令,打开“选项”对话框,进入“自定义序列”标签中,在“输入序列”下面的方框中输入部门排序的序列(如“机关,车队,一车间,二车间,三车间”等),单击“添加”和“确定”按钮退出。 2.选中“部门”列中任意一个单元格,执行“数据→排序”命令,打开“排序”对话框,单击“选项”按钮,弹出“排序选项”对话框,按其中的下拉按钮,选中刚才自定义

单链表的定义及其基本操作技巧

单链表的定义及基本操作 一、实验目的、意义 (1)理解线性表中带头结点单链表的定义和逻辑图表示方法。 (2)熟练掌握单链表的插入,删除和查询算法的设计与实现。 (3)根据具体问题的需要,设计出合理的表示数据的链表结构,并设计相关算法。 二、实验内容及要求 说明1:本次实验中的链表结构均为带头结点的单链表。 说明2: 学生在上机实验时,需要自己设计出所涉及到的函数,同时设计多组输入数据并编写主程序分别调用这些函数,调试程序并对相应的输出作出分析;修改输入数据,预期输出并验证输出的结果,加深对有关算法的理解。 具体要求: 建立单链表,完成链表(带表头结点)的基本操作:建立链表、插入、删除、查找、输出;其它基本操作还有销毁链表、将链表置为空表、求链表的长度、获取某位置结点的内容、搜索结点。 三、实验所涉及的知识点 数据结构、C语言语法函数、结构体类型指针、单链表(建表、初始化链表、求表长、插入、删除、查询算法)等。 四、实验结果及分析 (所输入的数据及相应的运行结果,运行结果要有提示信息,运行结果采用截图方式给出。)

五、总结与体会 (调试程序的心得与体会,若实验课上未完成调试,要认真找出错误并分析原因等。) 调试程序时,出现了许多错误。如:结构体类型指针出错,忽略了释放存储空间,对头插法建表、尾插法建表不熟悉等。另外还有一些语法上的错误。由于对所学知识点概念模糊,试验课上未能完成此次上机作业。后来经过查阅教材,浏览网页等方式,才完成试验。这次试验出现错误最重要的原因就是对课本知识点理解不深刻以及编写代码时的粗心。以后要都去练习、实践,以完善自己的不足。 六、程序清单(包含注释) //单链表

链表的基本操作(基于C)

#include #include struct Student { char cName[20]; int iNumber; struct Student* pNext; }; int iCount; struct Student* Create() { struct Student* pHead=NULL; struct Student* pEnd,*pNew; iCount=0; pEnd=pNew=(struct Student*)malloc(sizeof(struct Student)); printf("please first enter Name ,then Number\n"); scanf("%s",&pNew->cName); scanf("%d",&pNew->iNumber); while(pNew->iNumber!=0) { iCount++; if(iCount==1) { pNew->pNext=pHead; pEnd=pNew; pHead=pNew; } else { pNew->pNext=NULL; pEnd->pNext=pNew; pEnd=pNew; } pNew=(struct Student*)malloc(sizeof(struct Student)); scanf("%s",&pNew->cName); scanf("%d",&pNew->iNumber); } free(pNew); return pHead; }

void Print(struct Student* pHead) { struct Student *pTemp; int iIndex=1; printf("----the List has %d members:----\n",iCount); printf("\n"); pTemp=pHead; while(pTemp!=NULL) { printf("the NO%d member is:\n",iIndex); printf("the name is: %s\n",pTemp->cName); printf("the number is: %d\n",pTemp->iNumber); printf("\n"); pTemp=pTemp->pNext; iIndex++; } } struct Student* Insert(struct Student* pHead) { struct Student* pNew; printf("----Insert member at first----\n"); pNew=(struct Student*)malloc(sizeof(struct Student)); scanf("%s",&pNew->cName); scanf("%d",&pNew->iNumber); pNew->pNext=pHead; pHead=pNew; iCount++; return pHead; } void Delete(struct Student* pHead,int iIndex) { int i; struct Student* pTemp; struct Student* pPre; pTemp=pHead; pPre=pTemp; printf("----delete NO%d member----\n",iIndex); for(i=1;i

表的基本操作

教学内容: 4.3 表的基本操作 4.3.1 表的打开和关闭 1、使用菜单打开表 (1)选择“文件”菜单中的“打开”项,在弹出的“打开”对话框中“文件类型”列表框中选择“表(*.dbf)。 (2)选择或输入要打开的表文件名,单击“确定”打开表。 2、用命令打开表 命令格式:USE 表名 [EXCLUSIVE|SHARED] 3、数据表的关闭 如果打开的表是数据库表,则在关闭数据库的同时,该数据库中的所有表也将同时关闭。 如果打开的是自由表,则可用以下命令关闭该表。 命令格式1:USE 命令功能:关闭当前数据表。 命令格式2:CLOSE TABLE 命令功能:关闭所有打开的数据表。 4.3.2 数据的输入 1、使用浏览器输入数据 (1) 打开要输入数据的表。 (2) 选择“显示”菜单中“浏览”或“编辑“项;选择“浏览”,则显示”浏览“窗口;选择“编辑”,则显示“编辑”窗口。 (3)选择“显示”菜单中的“追加方式”,可向表中输入新记录的数据。 2、使用APPEND命令在当前数据表的尾部添加新记录 命令格式:APPEND [BLANK] 3、使用INSERT命令在当前表的任意位置插入一条新记录 命令格式:INSERT [BLANK][BEFORE] 4、备注型和通用型字段数据的输入 (1)备注型字段数据的输入,操作步骤如下: ①打开表的“编辑”或“浏览”窗口。

②把光标移到备注型字段下双击左键或按Ctrl+PageDown或Ctrl+PageUp键,进入备注字段的编辑窗口。 ③在备注字段的编辑窗口,可以输入或修改备注型数据。 (2)通用型数据的输入 通用型字段数据多数是用于存储OLE对象,如,图像、声音、电子表格和文字处理文档等,其长度也是不确定的。给通用型字段输入数据,操作步骤如下: ①打开表的“编辑”或“浏览”窗口。 ②把光标移到通用型字段下双击左键或按Ctrl+PageDown或Ctrl+PageUp键,进入通用字段的编辑窗口。 ③选择“编辑”菜单中“插入对象”,在“插入对象”窗口,选择“由文件创建”按钮,单击“浏览”按钮,选择要插入的文件。 ④单击“确定”按钮,选择的对象被插入到通用字段中。 4.3.3 记录的浏览 1、浏览数据窗口的定制 (1)打开表的“浏览”窗口。 (2)用鼠标拖动某一字段到指定处,可改变字段的显示顺序。 (3)可以使用鼠标调整字段的显示宽度。 (4)在表“浏览”窗口的左下角有一个窗口拆分条,把它拖到一个适当的位置,就可以把“浏览”窗口拆分成两个窗口,将其改变成有“浏览”和“编辑”两种显示方式的窗口。(5)选择“显示”菜单中的“网格线”,可以显示或隐藏浏览窗口中的网格。 2、记录的筛选 (1)打开表的“浏览”窗口。 (2)在“表”菜单中,选择“属性”命令,弹出“工作区属性”对话框。 (3)在“工作区属性”对话框中,可以直接在“数据过滤器”文本框中输入筛选表达式,或者选择“数据过滤器”框后面的“浏览”(…)按钮,在“表达式生成器”对话框中创建一个表达式。 (4)单击“确定”按钮,则在“浏览”窗口中只显示筛选过的记录。 3、字段的筛选 (1)打开表的“浏览”窗口,选择“表”菜单中的“属性”。 (2)在“工作区”属性对话框的“允许访问”框内,选中“字段筛选指定的字段”,单击“字段筛选”按钮,弹出“字段选择器”对话框。 (3)在“字段选择器”对话框中,选择“所有字段”框内需要显示的字段,单击“添加”按钮,将所需字段移入“选字字段”栏中。 (4)在选定了所需字段后,单击“确定”按钮。返回“工作区属性”对话框,单击“确定”按钮,关闭“工作区属性”对知框。 4、使用命令浏览表 命令格式1:BROWSE [范围] [FIELDS 字段表][FOR 条件]

实现单链表中的各种算法运算

实验一:实现单链表各种基本运算的算法 一、 实验目的 1、 掌握单链表存储结构的类型定义; 2、 实现单链表各种基本运算的算法。 二、 实验环境 1、 Windows 操作系统; 2、 Visual C++ 6.0 三、 实验内容 实现单链表各种基本运算的算法。 四、 概要设计 1、 存储结构的类型定义: typedef struct LNode { ElemType data; struct LNode *next; } LinkList; 2、 单链表示意图: 3、 项目组成图 : 4、algo2_2.cpp 的程序文件包含的函数原型及功能: InitList(LinkList *&L) 初始化单链表L DestroyList(LinkList *&L) 释放单链表L ListEmpty(LinkList *L)判断单链表L 是否为空表 ListLength(LinkList *L)返回单链表L 的元素个数 DispList(LinkList *L)输出单链表L GetElem(LinkList *L,int i,ElemType &e)获取单链表L 的第i 个元素 LocateElem(LinkList *L,ElemType e)在单链表L 中查找元素e ListInsert(LinkList *&L,int i,ElemType e)在单链表L 中的第i 个位置上插入元素e ListDelete(LinkList *&L,int i,ElemType &e)在单链表L 中删除第i 个元素 ……

5、exp2_2.cpp程序文件简介: (1)初始化单链表h: InitList(h); (2)依次采用尾插法插入a,b,c,d,e元素: ListInsert(h,1,'a'); ListInsert(h,2,'b'); ListInsert(h,3,'c'); ListInsert(h,4,'d'); ListInsert(h,5,'e'); (3)输出单链表h: DispList(h); (4)单链表h长度:ListLength(h) (5)判断单链表h 是否为空:ListEmpty(h)?"空":"非空" (6)查找单链表h的第3个元素:GetElem(h,3,e); (7)查找元素f的位置:LocateElem(h,'f') (8)在第4个元素位置上插入f元素:ListInsert(h,4,'f'); (9)输出单链表h:DispList(h); (10)删除h的第3个元素:ListDelete(h,3,e); (11)输出单链表h:DispList(h); (12)释放单链表h:DestroyList(h); 6、oj2-2的项目的模块结构: 在文件algo2-2中, 1.定义单链表结构类型; 2.初始化单链表 3.定义释放单链表的函数 4.定义判断单链表是否为空的函数 5.定义返回单链表元素个数的函数 6.定义输出单链表的函数 7.定义获取第i个元素的函数 8.定义查找元素的函数 9.定义插入元素的函数 10.定义删除元素的函数 在文件exp2-2中分别调用algo2-2中所定义的函数 函数调用关系图

单链表的基本操作 C语言课程设计

课程设计(论文) 题目名称单链表的基本操作 课程名称C语言程序课程设计 学生姓名 学号 系、专业信息工程系、网络工程专业 指导教师成娅辉 2013年6月6 日

目录 1 前言 (3) 2 需求分析 (3) 2.1 课程设计目的 (3) 2.2 课程设计任务 (3) 2.3 设计环境 (3) 2.4 开发语言 (3) 3 分析和设计 (3) 3.1 模块设计 (3) 3.2 系统流程图 (4) 3.3 主要模块的流程图 (6) 4 具体代码实现 (9) 5 课程设计总结 (12) 5.1 程序运行结果 (12) 5.2 课程设计体会 (12) 参考文献 (13) 致谢 (13)

1 前言 我们这学期学习了开关语句,循环语句、链表、函数体、指针等的应用,我们在完成课程设计任务时就主要用到这些知识点,本课题是单链表的简单操作,定义四个子函数分别用来创建链表、输出链表、插入数据以及删除数据,主函数中主要用到开关语句来进行选择调用哪个子函数,下面就是课程设计的主要内容。 2 需求分析 2.1 课程设计目的 学生在教师指导下运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。通过课程设计(论文),提高学生综合运用所学知识来解决实际问题、使用文献资料、及进行科学实验或技术设计的初步能力,为毕业设计(论文)打基础。 2.2 课程设计任务 输入一组正整数,以-1标志结束,用函数实现:(1)将这些正整数作为链表结点的data域建立一个非递减有序的单链表,并输出该单链表;(2)往该链表中插入一个正整数,使其仍保持非递减有序,输出插入操作后的单链表;(3)删除链表中第i个结点,输出删除操作后的单链表,i从键盘输入。 2.3 设计环境 (1)WINDOWS 7系统 (2)Visual C++ 2.4 开发语言 C语言 3 分析和设计 3.1 模块设计 定义链表结点类型struct node表示结点中的信息,信息包括数据域data(用于存放结点中的有用数据)以及指针域next(用于存放下一个结点的地址),并将链表结点类型名改为NODE。如下所示:

单链表的建立及其基本操作的实现(完整程序)

#include "stdio.h"/*单链表方式的实现*/ #include "malloc.h" typedef char ElemType ; typedef struct LNode/*定义链表结点类型*/ { ElemType data ; struct LNode *next; }LNode,*LinkList;/*注意与前面定义方式的异同*/ /*建立链表,输入元素,头插法建立带头结点的单链表(逆序),输入0结束*/ LinkList CreateList_L(LinkList head) { ElemType temp; LinkList p; printf("请输入结点值(输入0结束)"); fflush(stdin); scanf("%c",&temp); while(temp!='0') { if(('A'<=temp&&temp<='Z')||('a'<=temp&&temp<='z')) { p=(LinkList)malloc(sizeof(LNode));/*生成新的结点*/ p->data=temp; p->next=head->next; head->next=p;/*在链表头部插入结点,即头插法*/ } printf("请输入结点值(输入0结束):"); fflush(stdin); scanf("%c",&temp); } return head; } /*顺序输出链表的内容*/ void ListPint_L(LinkList head) { LinkList p; int i=0; p=head->next; while(p!=NULL) { i++; printf("单链表第%d个元素是:",i);

顺序表的建立及其基本操作技巧

山东师范大学 实验报告 课程:数据结构班级:2016级通信2班实验序号: 1 姓名:韩明达 学号: 201611030230 实验日期:9.17 题目: 顺序表的建立和运算 一、实验目的和要求 (1)熟悉C语言的上机环境,进一步掌握C语言的结构特点。 (2)掌握线性表的顺序存储结构的定义及基本运算 二、实验环境 Windows10,Visual Studio 2017 三、实验内容及实施 实验内容 1、建立一个顺序表,输入n个元素并输出; 2、查找线性表中的最大元素并输出; 3、在线性表的第i个元素前插入一个正整数x; 4、删除线性表中的第j个元素; 5、将线性表中的元素按升序排列; 【程序流程图】

【程序】 #include #include using namespace std; #define MAXSIZE 100 #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef struct { //定义顺序表结构 int data[MAXSIZE]; //存储空间的基地址; int length; //当前表长 }SqList; int InitList(SqList &L) //初始化顺序表 { L.length = 0; //当前长度为0 return OK; } void ShowList(SqList &L) //显示顺序表 { cout << "您构建的顺序表为:" << endl; //提示int i; for (i = 0; i < L.length; i++) { cout << L.data[i] << " ";

数据结构上机报告:编写一个程序,实现单链表的各种基本运算

《数据结构》上机报告 _2011_年_ 3 _月_ 9 _日_____ 学号_ _ 同组成员 __ _无_ __ 1.实验题目及要求 编写一个程序,实现单链表的各种基本运算 2.需求分析 建立一个单链表,实现单链表的初始化,插入、删除节点等功能,以及确定某一元素在单链表中的位置。 (1)初始化单链表; (2)依次采用尾插入法插入a,b,c,d,e元素; (3)输出单链表L; (4)输出单链表L的长度; (5)判断单链表L是否为空; (6)输出单链表L的第三个元素; (7)输出元素a的位置; (8)在第4个元素位置上插入f元素; (9)输出单链表L; (10)删除L的第3个元素; (11)输出单链表L; (12)释放单链表。 3.概要设计 (1)为了实现上述程序功能,需要定义一个简化的线性表抽象数据类型:ADT LinearList { 数据对象:D={ a i|a i∈IntegerSet,i=0,1,2,…,n,n≥0} 结构关系:R={|a i,a i+1 ∈D} 基本操作: InitList_L(L) 操作前提:L是一个未初始化的线性表 操作结果:将L初始化为一个空的线性表

CreateList_L(L) 操作前提:L是一个已初始化的空表 操作结果:建立一个非空的线性表L ListInsert_L(L,pos,e) 操作前提:线性表L已存在 操作结果:将元素e插入到线性表L的pos位置 ListDelete_L(L,pos,e) 操作前提:线性表L已存在 操作结果:将线性表L中pos位置的元素删除, 删除的元素值通过e返回 LocateList_L(L,e) 操作前提:线性表L已存在 操作结果:在线性表L中查找元素e, 若存在,返回元素在表中的序号位置; 若不存在,返回-1 DestroyList_L(&L) 初始条件:线性表L已存在 操作结果:销毁线性表 ListEmpty_L(L) 初始条件:线性表已存在 操作结果:若L为空表,则返回ERROR,否则返回FALSE ListLength_L(L) 初始条件:线性表L已存在 操作结果:返回L中数据元素个数 GetElem_L(L,I,&e) 初始条件:线性表L已存在 操作结果:用e返回L中第i个数据元素值 } (2)本程序包含10个函数: ?主函数main() ?初始化单链表函数InitList_L() ?显示单链表容函数DispList_L() ?插入元素函数ListInsert_L() ?删除元素函数ListDelete_L() ?查找元素函数LocateList_L() ?创建链表函数CreateList_L() ?链表元素长度函数ListLength_L()

相关文档