数据结构C语言实现顺序表的插入和删除代码

数据结构C语言实现顺序表的插入和删除代码
数据结构C语言实现顺序表的插入和删除代码

数据结构顺序表真题

第二章复习题 本章重点掌握:线性结构特点,顺序存储结构和链式存储结构特点。 1.在顺序表中插入或删除一个元素,需要平均移动( 一半 )元素,具体移动的元素个数与( 插入或删除的位置 )有关。插入时平均 次数(n/2 ),删除时平均次数((n-1)/2 )。 2.有一个含头结点的循环链表,头指针为 head, 则其为空的条件是:( C ) A)head==NULL B)head->next==NULL C)head->next==head 3.在长度为 n 的顺序表的第 i 个位置上插入一个元素(1≤i≤n+1),元素的移动次数为:( A ) A) n – i + 1 B) n – i C) i D) i – 1 4.对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为( C ) A)顺序表B) 用头指针表示的循环单链表 C) 用尾指针表示的循环单链表D) 单链表 5.设单链表中结点的结构为(data, link)。已知指针 q 所指结点是指针 p 所指结点的直接前驱,若在*q 与*p 之间插入结点*s,则应执行下列哪一个操作?( B ) A)s->link = p->link;p->link = s;(B) q->link = s;s->link = p; (C) p->link = s->link;s->link = p;(D) p->link = s;s->link = q; 6.设单链表中结点的结构为(data, link)。已知指针 p 所指结点不是尾结点,若在*p 之后插入结点*s,则应执行下列哪一个操作?(B)

A)s->link = p;p->link = s;(B) s->link = p->link;p->link = s; (C) s->link = p->link;p = s;(D) p->link = s;s->link = p; 7.设单链表中结点的结构为(data, link)。若想摘除结点*p 的直接后继,则应执行下列哪一个操作?(A) (A) p->link = p->link->link; (B) p = p->link;p->link = p->link->link; (C) p->link = p->link;(D) p = p->link->link; 8.设单循环链表中结点的结构为(data, link),且 rear 是指向非空的 带表头结点的单循环链表的尾结点的指针。若想删除链表第一个结点,则应执行下列哪一个操作?(D) (A)s = rear;rear = rear->link;delete s; (B)rear = rear->link;delete rear; (C)rear = rear->link->link;delete rear; (D)s = rear->link->link;rear->link->link = s->link; delete s; (rear 指向尾结点,rear->link->link 指向第一个结点,第一个结点变为原来的第二个结点) 9.设双向循环链表中结点的结构为(data, lLink, rLink),且不带表头 结点。若想在指针 p 所指结点之后插入指针 s 所指结点,则应执 行下列哪一个操作?( D )

数据结构实验报告——顺序表链表的实现

课程名称:数据结构任课教师: 实验题目:线性表的基本操作 实验环境: Visual C++ 6.0 实验目的: 1、掌握线性表的定义; 2、掌握线性表的基本操作,如建立、查找、插入和删除等。 实验内容: 定义一个包含学生信息(学号,姓名,成绩)的的顺表序和链表,使其具有如下功能: (1)根据指定学生个数,逐个输入学生信息; (2)逐个显示学生表中所有学生的相关信息;

(3)根据姓名进行查找,返回此学生的学号和成绩;

(4)根据指定的位置可返回相应的学生信息(学号,姓名,成绩); (5)给定一个学生信息,插入到表中指定的位置; int createStLink(struct Node *head,struct Node *stu) { struct Node *p6,*p7,*p8; p7=head; p6=stu; if(head==NULL) { head=p6;p6->next=NULL; } else { //如果链表为空则在头结点创建信息while(p6->num > p7->num && p7->next!=NULL)

{ p8=p7; p7=p7->next; } if(p6->num<=p7->num) { if(head==p7) head=p6; else p8->next=p6; p6->next=p7; } else { p7->next=p6;p6->next=NULL; } } N++; return 1; } int main() { struct Node *H,*stud; char M; int num1; H=initlist(); (6)删除指定位置的学生记录;

C语言顺序结构

第四章C语言顺序结构 4.1 C语句概述 一般来说,程序设计语言中的流程控制结构分为3种:顺序结构、选择结构和循环结构。 表达式语句由表达式加上分号“;”组成,其一般形式为:表达式; 函数调用语句由函数名、实际参数加上分号“;”组成。其一般形式: 函数名(实际参数表) 控制语句用于控制程序的流程,以实现程序的各种结构方式。C语言中共有9种控制语句,可以将其分为如下3类: 复合语句:把多个语句用{}括起来组成的一个语句称为复合语句。在程序中应把复合语句看成是单条语句,而不是多条语句。 空语句:只有分号“;”组成的语句。 4.2 赋值语句 赋值语句是表达式语句的一种,是由赋值表达式再加上分号构成的表达式语句,其一般形式为:变量=表达式; 注意在变量声明中给变量赋初值和赋值语句的区别。给变量赋初值是变量声明的一部分,赋初值后的变量与其后的其它同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。例如int a=1,b;是在变量声明中对变量a赋初值,其等效于如下两条语句; int a,b; /*定义整型变量a,b*/ a=1; /*为变量a赋值*/ 在变量声明中,不允许给多个连续变量赋初值。下列说明是错误的:int a=b=c=1;,必须写为int a=1,b=1,c=1; 4.3 格式输入输出 格式输入输出即向标准输出设备显示器输出数据的语句。 4.3.1 printf函数——格式输出 printf函数称为格式输出函数,其关键字最末一个字母“f”即为格式(format)之意。printf函数的功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用printf函数之前必须包含stdio.h文件。 printf函数调用的一般形式为: printf(“格式控制字符串”,输出列表) 其中,格式字符串用于指定输出格式,可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位等。例如:“%d”表示按十进制整型输出,“%f”表示按十进制浮点型输出,“%c”表示按字符型输出。 类型符类型意义 d 以十进制形式输出带符号整数(整数不输出符号)

数据结构- 顺序表的基本操作的实现-课程设计-实验报告

顺序表的基本操作的实现 一、实验目的 1、掌握使用VC++上机调试顺序表的基本方法; 2、掌握顺序表的基本操作:建立、插入、删除等运算。 二、实验仪器 安装VC++软件的计算机。 三、实验原理 利用线性表的特性以及顺序存储结构特点对线性表进行相关的基本操作四、实验内容 程序中演示了顺序表的创建、插入和删除。 程序如下: #include #include /*顺序表的定义:*/ #define ListSize 100 typedef struct { int data[ListSize]; /*向量data用于存放表结点*/ i nt length; /*当前的表长度*/ }SeqList; void main() { void CreateList(SeqList *L,int n); v oid PrintList(SeqList *L,int n); i nt LocateList(SeqList *L,int x); v oid InsertList(SeqList *L,int x,int i); v oid DeleteList(SeqList *L,int i); SeqList L;

i nt i,x; i nt n=10; L.length=0; c lrscr(); C reateList(&L,n); /*建立顺序表*/ P rintList(&L,n); /*打印建立后的顺序表*/ p rintf("INPUT THE RESEARCH ELEMENT"); s canf("%d",&x); i=LocateList(&L,x); p rintf("the research position is %d\n",i); /*顺序表查找*/ p rintf("input the position of insert:\n"); s canf("%d",&i); p rintf("input the value of insert\n"); s canf("%d",&x); I nsertList(&L,x,i); /*顺序表插入*/ P rintList(&L,n); /*打印插入后的顺序表*/ p rintf("input the position of delete\n"); s canf("%d",&i); D eleteList(&L,i); /*顺序表删除*/ P rintList(&L,n); /*打印删除后的顺序表*/ g etchar(); } /*顺序表的建立:*/ void CreateList(SeqList *L,int n) {int i; printf("please input n numbers\n"); for(i=1;i<=n;i++) scanf("%d",&L->data[i]); L->length=n;

C语言顺序结构

第四章C语言顺序结构 4、1 C语句概述 一般来说,程序设计语言中得流程控制结构分为3种:顺序结构、选择结构与循环结构。 表达式语句由表达式加上分号“;”组成,其一般形式为:表达式; 函数调用语句由函数名、实际参数加上分号“;”组成。其一般形式: 函数名(实际参数表) 控制语句用于控制程序得流程,以实现程序得各种结构方式。C语言中共有9种控制语句,可以将其分为如下3类: 复合语句:把多个语句用{}括起来组成得一个语句称为复合语句。在程序中应把复合语句瞧成就是单条语句,而不就是多条语句。 空语句:只有分号“;”组成得语句。 4、2 赋值语句 赋值语句就是表达式语句得一种,就是由赋值表达式再加上分号构成得表达式语句,其一般形式为: 变量=表达式; 注意在变量声明中给变量赋初值与赋值语句得区别。给变量赋初值就是变量声明得一部分,赋初值后得变量与其后得其它同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。例如int a=1,b;就是在变量声明中对变量a赋初值,其等效于如下两条语句; int a,b; /*定义整型变量a,b*/ a=1; /*为变量a赋值*/ 在变量声明中,不允许给多个连续变量赋初值。下列说明就是错误得:int a=b=c=1;,必须写为int a=1,b=1,c=1; 4、3 格式输入输出 格式输入输出即向标准输出设备显示器输出数据得语句。 4、3、1 printf函数——格式输出 printf函数称为格式输出函数,其关键字最末一个字母“f”即为格式(format)之意。printf函数得功能就是按用户指定得格式,把指定得数据显示到显示器屏幕上。printf函数就是一个标准库函数,它得函数原型在头文件“stdio、h”中。但作为一个特例,不要求在使用printf函数之前必须包含stdio、h文件。 printf函数调用得一般形式为: printf(“格式控制字符串”,输出列表) 其中,格式字符串用于指定输出格式,可由格式字符串与非格式字符串两种组成。格式字符串就是以%开头得字符串,在%后面跟有各种格式字符,以说明输出数据得类型、形式、长度、小数位等。例如: “%d”表示按十进制整型输出,“%f”表示按十进制浮点型输出,“%c”表示按字符型输出。 表4-1 d 以十进制形式输出带符号整数(整数不输出符号) f 以小数形式输出单、双精度实数

数据结构顺序表的查找插入与删除

一、上机实验的问题和要求: 顺序表的查找、插入与删除。设计算法,实现线性结构上的顺序表的产生以及元素的查找、插入与删除。具体实现要求: 1.从键盘输入10个整数,产生顺序表,并输入结点值。 2.从键盘输入1个整数,在顺序表中查找该结点的位置。若找到,输出结点的位置;若找 不到,则显示“找不到”。 3.从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插 入在对应位置上,输出顺序表所有结点值,观察输出结果。 4.从键盘输入1个整数,表示欲删除结点的位置,输出顺序表所有结点值,观察输出结果。 二、源程序及注释: #include #include /*顺序表的定义:*/ #include #define ListSize 100 /*表空间大小可根据实际需要而定,这里假设为100*/ typedef int DataType; /*DataType可以是任何相应的数据类型如int, float或char*/ typedef struct { DataType data[ListSize]; /*向量data用于存放表结点*/ int length; /*当前的表长度*/ }SeqList; void main() { SeqList L; int i,x; int n=10; /*欲建立的顺序表长度*/ L.length=0; void CreateList(SeqList *L,int n); void PrintList(SeqList L,int n); int LocateList(SeqList L,DataType x); void InsertList(SeqList *L,DataType x,int i); void DeleteList(SeqList *L,int i); CreateList(&L,n); /*建立顺序表*/ PrintList(L,n); /*打印顺序表*/ printf("输入要查找的值:"); scanf("%d",&x); i=LocateList(L,x); /*顺序表查找*/ printf("输入要插入的位置:"); scanf("%d",&i); printf("输入要插入的元素:"); scanf("%d",&x); InsertList(&L,x,i); /*顺序表插入*/

数据结构实现顺序表的各种基本运算(20210215233821)

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

主函数main

四、实验步骤与算法实现 #in clude #in clude #defi ne MaxSize 50 typedef char ElemType; typedef struct {ElemType data[MaxSize]; in t le ngth; void In itList(SqList*&L)〃 初始化顺序表 L {L=(SqList*)malloc(sizeof(SqList)); L->le ngth=0; for(i=0;ile ngth;i++) prin tf("%c ",L->data[i]); } void DestroyList(SqList*&L)〃 {free(L); } int ListEmpty(SqList*L)〃 {retur n( L->le ngth==O); } int Listle ngth(SqList*L)〃 {return(L->le ngth); } void DispList(SqList*L)〃 {int i; 释放顺序表 L

数据结构顺序表的实现

实验3 顺序表 一、实验目的 1. 熟练掌握顺序表的类型定义和基本操作算法(以建立、插入、删除、遍历、排序和归并等操作为重点)的实现。 2. 通过实验加深对C语言的使用(特别是函数、数组、结构体和指针)。 3. 掌握模块化程序设计方法。 二、预备知识 1. 顺序表的类型定义 //线性表存储空间的初始分配量 #define LIST_Init_Size 100 //线性表存储空间的分配增量 #define LISTINCREMENT 10 typedef struct{ ElemType *elem; //存储区域基地址 int length; //当前有效长度 int listsize;//当前分配的存储容量 } SqList, *PSqList; 2. 顺序表的基本操作 1)初始化线性表InitList(&L) 该运算的结果是构造一个空的线性表L,为线性表分配存储空间用于存放数据元素。 2)销毁线性表DestroyList(&L ) 该运算的结果是释放线性表L占用的内存空间。 3)判定是否为空表ListEmpty(L)

该运算返回一个值表示L是否为空表。若L为空表,则返回1,否则返回0。4)求线性表的长度ListLength(L) 该运算返回顺序表L的长度。实际上只需返回length成员的值即可。 5)PriorElem( L, cur_e, &pre_e ) 该运算返回给定数据元素的前驱数据元素的值 6)NextElem( L, cur_e, &next_e ) 该运算返回给定数据元素的后继数据元素的值 7)输出线性表DispList(L) 该运算当线性表L不为空时,顺序输出L中各数据元素的值。 8)求某个数据元素值GetElem(L,i,&e) 该运算返回L中第i(1≤i≤ListLength(L))个元素的值,存放在e中。 8)按元素值查找LocateElem(L,e) 该运算顺序查找第1个值域与e相等的数据元素的序号。若这样的元素不存在,则返回值为0。 9)插入数据元素ListInsert(&L,i,e) 该运算在顺序表L的第i个位置(1≤i≤ListLength(L)+1)上插入新的元素e。10)删除数据元素ListDelete(&L,i,&e) 该运算删除顺序表L的第i(1≤i≤ListLength(L))个元素。 11)清空线性表ClearList( &L ) 删除线性表L中的所有数据元素,但不释放已分配给线性表的存储空间。2. 两个有序表的归并算法 void MergeList(SqList La, SqList Lb, PSqList PLc) { InitList(PLc); // 构造空的线性表Lc i = j = 1; k = 1; La_len = ListLength(La); Lb_len = ListLength(Lb);

C语言实验二程序、总结 顺序结构与输入、输出方法

实验二顺序结构与输入/输出方法 一实验目的 1 学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自增减运算 符的使用。 2 掌握C语言中赋值语句的使用。 3 掌握C语言中各种数据的输入/输出方法,能正确使用基本格式符。 二实验内容 1 输入下面的程序: #include main() { int i,j,m,n; i=8;j=10; printf("%d,%d,%d,%d\n",i,j,m,n); /* 第5行 */ m=++i; n=j++; /* 第6行 */ printf("%d,%d,%d,%d\n",i,j,m,n); /* 第7行 */ } 运行程序,分析第5行和第7行输出的不同。 调试分析:因为第五行的m,n没有赋初值,所以对应的m,n输出是乱的数字,第七行的m,n在第六行已赋初值,且i和j也相应的自加,结果如下图 ⑴将第6行按如下修改以后再运行,分析第5行和第7行输出的不同。 m=i++; n=++j; /* 第6行 */ 调试分析:m=i++是(m=i,i=i+1)。 n=++j;是(j=j+1,n=j)结果如 下图 ⑵在程序最后增加两行,记录并分析该行的输出。 i=j=8; /* 第8行 */ printf("%d,%d,%d,%d\n",i,++i,j,j++); /* 第9行 */ 调试分析:结果如下图

2 运行以下程序,并分析输出结果 #include main() { int a=-2; long b; float c; b=20000+20000; c=1.23e-1; printf("a=%d,%3d,%-3d,b=%Ld\n",a,a,a,b); printf("a=%o,%x,%u\n",a,a,a); printf("d=%f,%8.2f,%.2f\n",c,c,c); printf("d=%e,%8.2e,%g\n",c,c,c); printf("%c,%s,",'\072',"China"); printf("|-%5.2s|%5.2s|\n","China","China"); } 调试分析: 这个实验主要考察整型,长整型和浮点型等之间的输出,对浮点型小数点左右个数的考察,输出结果如下图 3 按格式要求输入、输出数据。 #include main() { int a,b; float x,y; char c1,c2; scanf("a=%d,b=%d",&a,&b); scanf("%f,%e",&x,&y); scanf("%c%c%c",&c1,&c1,&c2); /* 第8行 */ printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2); } 运行该程序,按如下方式在键盘上输入数据,写出输出的结果。 a=3,b=7 85,71.82 Aa 调试分析:主要是考察对输入输出的理解,以及输入输出要注意的问题,结果

c语言顺序结构程序设计练习题10道

c语言顺序结构程序设计练习题 1、编写程序:输入一矩形的长和宽,计算该矩形的面积。 2、编程:输入求的半径R,计算并输出球的体积。 3、编程:输入三个数,求出这三个数的和以及平均值,并在屏幕上输出。 4、编程:输入一个三位整数x(999=>x>=100),将其分解出百位、十位、各位,并求出各位之和以及各位之积 5、编程:已知三角形的三边a=3,b=4,c=5,求其面积s。(提示:假设有一个三角形,边长分别为a、b、c,三角形的面积S可由以下公式求得:S=sqrt(p(p-a)(p-b)(p-c)),而公式里的p 为半周长:p=(a+b+c)/2。 6、编写一个C程序,输出以下信息: ************************** Very Good! ************************** 7、编写一个程序,输入a、b、c三个值,输出其中最大值. 8、写出程序运行的结果: main() { int i,j,m,n; i=8; j=10; m=++i; n=j++; printf(“%d,%d,%d,%d”,i,j,m,n); } 9、写出程序运行的结果: main() { char a ,b, c1,c2; float x ,y; a = 3; b =7; x = 8.5; y = 71.82; c1 = ' A' ; c2 = 'a '; printf("a= %d b = %d/n",a,b); printf("x = %f y = %f",x,y); printf("c1= %c,c2 =%c",c1,c2); } 10、求ax2+bx+c=0方程的根,a,b,c由键盘输入,假设b2-4ac>0。

实验一数据结构顺序表的插入和删除

实验一顺序表的操作 1. 实验题目:顺序表的操作 2.实验目的和要求: 1)了解顺 序表的基本概念、顺序表结构的定义及在顺序表上的基本操作(插入、 删除、查找以及线性表合并 )。 2)通过在 Turbo C ( WinTc ,或 visual stdio6 )实现以上操作的 C 语言 代码。 3)提前了解实验相关的知识(尤其是 C 语 言)。 3.实验内容:(二选一) 1) 顺序表的插入算法, 删除算法, 顺序表的合并算法 2) 与线性表应用相关的实例( 自己选择具体实例) 4.部分参考实验代码: ⑴ 顺序表结构的定义: #include #define MAXLEN 255 typedef int ElemType; typedef struct { ElemType elem[MAXLEN]; int length; }sqList; ⑵ 顺序表前插(在第i 号元素前插入一个新的元素) int ListInsert(sqList *la,int i,int x) { int j; if(i<0||i>la-> length +1) { printf( “ n the value of i is wrong! ” ); return 0; } if(la-> length +1>=MAXLEN) { printf( “ n overflow! ” ); return 0; }

. for(j=la-> length;j>=i;j--) la->list[j+1]=la->list[j]; la->list[i]=x; la-> length ++; return 1; } ⑶ 顺序表删除 int ListDelete(sqList *la,int i) { if(i<0||i>la-> length ) { printf( “ return 0; n”); } for(i;i length;i++) la->list[i-1]=la->list[i]; la-> length --; return 1; } 5.附录:实验预备知识: ⑴ 复习 C 语言中数组的用法。 ⑵ 了解线性表和顺序表的概念,顺序表的定义方法; 线性表是n 个数据元素的有限序列,至于每个数据元素的具体含义,在不同的情况下各不相同。 顺序表是线性表的顺序存储表示,是用一组地址连续的存储单元依次存储线性表的数据元素。 在 C 语言中,顺序表是用数组来实现的。 ⑶ 掌握线性表在顺序存储结构上实现基本操作:查找、插入、删除和 合并的算法。 在实现这些算法的时候,要注意判断输入数据的合法性,除此之外还要要注意以下内容: 在实现查找的时候,首先要判断该顺序表是否为空,其次要判断查找后的结果(查到时输出查到的数据,未查到时给出未查到提 示)。 在实现插入的时候,首先要判断该顺序表是否为满,如为满则报错 (此时要注意:顺序表是用数组来实现的,它不能随机分配空 间);如不为满,则需判断要插入的位置是否合法(例如:如果 一个线性表的元素只有10 个,而要在第0 个元素前插入或在第 11 个元素后插入就为不合法)。其次要注意是前插还是后插,两

C语言(顺序结构)习题与答案

一、单选题 1、以下程序的功能是:给r输入数据后计算半径为r的圆面积s。程序编译时出错。main() /*Beginning */ { int r; float s; scanf("%d",&r); s=π*r*r; printf("s=%f\n",s); } 出错的原因是()。 A.计算圆面积的赋值语句中使用了非法变量 B.存放圆半径的变量r不应该定义为整型 C.注释语句书写位置错误 D.输出语句中格式描述符非法 正确答案:A 解析: A、π这个符合不是C语言的合法标识符,应提前进行常量定义 2、有以下程序 main() { int m=12,n=34; printf("%d%d",m++,++n); printf("%d%d\n",n++,++m); } 程序运行后的输出结果是()。 A.12343514 B.12353514 C.12343513

D.12353513 正确答案:B 解析: B、m++ ++在m后,先使用m的值输出,后给m增1 ++m,++在m前,先给m的值增1后,再输出m 3、有定义语句:int b;char c[10]; ,则正确的输入语句是()。 A.scanf("%d%s",b,c); B.scanf("%d%s",&b,&c); C.scanf("%d%s",b,&c); D.scanf("%d%s",&b,c); 正确答案:D 解析: D、输入语句整型变量 b 需要取地址 &,c是数组名,本身就代表地址,所以不需要取地址符& 4、有以下程序 main() { int m,n,p; scanf("m=%dn=%dp=%d",&m,&n,&p); printf("%d%d%d\n",m,n,p); } 若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是()。 A.123 456 789 B.m=123 n=456 p=789 C.m=123n=456p=789 D.m=123,n=456,p=789 正确答案:C 解析: C、输入语句中出现普通字符要按原样输入 5、有以下程序

数据结构C语言版 串的定长顺序存储表示和实现

#include #include #include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define OVERFLOW -2 #define MAXSTRLEN 255 typedef int ElemType; typedef int Status; typedef unsigned char SString[MAXSTRLEN+1]; //串赋值操作 Status StrAssign(SString T,char chars[]){ // 生成一个其值等于chars的串T int i; if(strlen(chars)>MAXSTRLEN) return ERROR; T[0]=strlen(chars); for(i=0;i<=T[0];i++){ T[i+1]=chars[i];} return OK; }//StrAssign //输出串 void StrPrint(SString S){ int i; for(i=1;i<=S[0];i++){ printf("%c",S[i]); } printf("\n"); }//PrnStr //串复制操作 Status StrCopy(SString T,SString S){ // 由串S复制得串T int i; for(i=1;i<=S[0];i++) T[i]=S[i]; T[0]=S[0]; return OK; }//StrCopy //判空操作 Status StrEmpty(SString S){ if(S[0]==0) return OK;

c语言程序设计实验报告1--顺序结构

福建农林大学金山学院实验报告 系(教研室):专业:年级: 实验课程: C语言程序设计姓名:学号:实验室号:_ 计算机号:实验时间:指导教师签字:成绩: 实验1:顺序结构程序设计 一、实验目的和要求 1.了解Visual C++ DEV_C++的基本操作方法 2.掌握C程序设计的基本步骤:编辑、编译、连接和运行 3.掌握各种类型数据的输入输出方法 4.能够编写一个简单的程序 二、实验内容和原理 1. 输入并运行一个简单、正确的程序。 # include <> int main( ) { printf ("This is a c program!\n"); return 0; } 2. 要使下面程序的输出语句在屏幕上显示:A,B,34,则从键盘输入的数据格式应为AB34__________ 。 #include<> int main() { char a, b; int c;

scanf("%c%c%d",&a,&b,&c); printf("%c,%c,%d\n",a,b,c); return0; 问题1:要使上面程序的键盘输入数据格式为a=A,b=B,34,输出语句在屏幕上显示的结果也为A,B,34,则应修改程序中的哪条语句怎样修改 scanf( “a=%c,b=%c,%d”,&a,&b,&c ); 问题 2:要使上面程序的键盘输入数据格式为A,B,34,而输出语句在屏幕上显示的结果为“A”,“B”,34,则应修改程序中的哪两条语句怎样修改 scanf( “%c,%c,%d”,&a,&b,&c); printf(“\”%c\”,\”%c\”,%d\n”,a,b,c); 3、编程求一个圆的周长和面积。用scanf输入圆半径,输出保留两位小数。 4、输入一个华氏温度F,要求输出摄氏温度C。公式为 c=5/9(F-32),取两位小数。 5、编程序,用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf 函数输出这两个字符。 6. 计算定期存款本利之和。 设银行定期存款的年利率rate为%,并已知存款期为n年,存款本金为capital元,试编程计算n年后的本利之和deposit。要求定期存款的年利率rate、存款期n和存款本金capital 均由键盘输入。(提示:pow为幂函数:pow(2,3)表示23)。 #include <> #include <> int main() { } 三、实验环境

数据结构顺序表(电话通讯录)

数据结构用顺序表实现的电话通讯录(C语言) #include #include #include #include #define FALSE 0 #define ERROR 0 #define OK 1 #define INFEASIBLE -1 #define LIST_INIT_SIZE 10 #define LIST_INCREMENT 5 #define N 5 typedefint Status; typedefstruct { char name[10]; //姓名 char num[15]; //号码 }student; typedefstruct { student *elem; //存储空间基址 int length; //当前长度 intlistsize; //当前分配的存储空间(以sizeof(student)为单位) }Sqlist; Sqlist L; //定义全局变量L 为Sqllist类型 Status ListInsert(Sqlist&L,inti,student e) { //插入学生信息到顺序表L中 int j; student *newbase; if(i<1||i>L.length+1) return ERROR; //i值不合法 if(L.length>=L.listsize) //当前存储空间已满,增加分配 { newbase=(student *)realloc(L.elem,(LIST_INIT_SIZE+LIST_INCREMENT)*(sizeof(student))); if(!newbase) //存储分配失败 exit(OVERFLOW); L.elem=newbase; //新基址 L.listsize+=LIST_INCREMENT; //增加存储容量 } for(j=L.length;j>=i;j--) L.elem[j]=L.elem[j-1]; //插入位置及之后元素的右移 L.elem[i-1]=e; L.length++; return OK;

数据结构实验报告-顺序表的创建、遍历及有序合并操作

数据结构实验报告-顺序表的创建、遍历及有序合并操作二、实验内容与步骤 实现顺序表的创建、遍历及有序合并操作,基本数据结构定义如下: typedef int ElemType; #define MAXSIZE 100 #define FALSE 0 #define TRUE 1 typedef struct {ElemType data[MAXSIZE]; int length; }seqlist; 创建顺序表,遍历顺序表 #include #include #define MAXSIZE 100 #define Icreament 20 #define FALSE 0

#define TRUE 1 typedef int ElemType; //用户自定义数据元素类型 // 顺序表结构体的定义 typedef struct { ElemType *elem; //顺序表的基地址 int length; //顺序表的当前长度 int listsize; //预设空间容量 }SqList; //线性表的顺序存储结构 SqList* InitList() //创建空的顺序表 { SqList* L = (SqList*)malloc(sizeof(SqList));//定义顺序表L if(!L) { printf("空间划分失败,程序退出\n"); return NULL; } L->elem=(ElemType *)malloc(MAXSIZE*sizeof(ElemType)); if(!L->elem) { printf("空间划分失败,程序退出\n");

C语言(顺序结构程序设计)习题与答案

1、一个C程序的执行是从( )。 A.本程序的main函数开始,到main函数结束。 B.本程序的main函数开始,到本程序文件的最后一个函数结束。 C.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。 D.本程序文件的第一个函数开始,到本程序main函数结束。 正确答案:A 2、C语言规定:在一个源程序中,main函数的位置( )。 A.必须在系统调用的库函数的后面 B.必须在最开始 C.可以任意 D.必须在最后 正确答案:C 3、下面四个选项中,均是不合法的浮点数的选项是( )。 A.160. 0.12 e3 B.123 2e4.2 .e5 C.-e3 .234 1e3 D..18 123e4 0.

4、下面四个选项中,均是合法浮点数的选项是( )。 A.+le+1 5e-9.4 03e2 B.123e 1.2e-.4 +2e-1 C.-.60 12e-4 -8e5 D.-e3 .8e4 5.e-0 正确答案:C 5、下面正确的字符常量是( )。 A.'' B.'W' C."a" D.'\\'' 正确答案:B 6、下面四个选项中,均是不正确的八进制数或十六进制数的选项是( )。 A. 016 0x8f 018 B. 010 -0x11 0x16

7ff -123 D.oabc 017 0x8 正确答案:C 7、下面不正确的字符串常量是( )。 A."12\12" B."0" C."" D.'abc' 正确答案:D 8、在C语言中,要求运算数必须是整型的运算符是( )。 A./ B.= C.++ D.% 正确答案:D 9、若以下变量均是整型,且num=sum=7;则执行表达式 sum=num++,sum++,++num后sum的值为( )。 A.7 B.9 C.10 D.8 正确答案:D 10、若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是( )。

数据结构实验一_顺序表的基本操作实验报告

实验一顺序表的基本操作 一、实验目的 掌握线性表的顺序表基本操作:建立、插入、删除、查找、合并、打印等运算。 二、实验要求包含有头文件和main函数; 1.格式正确,语句采用缩进格式; 2.设计子函数实现题目要求的功能; 3.编译、连接通过,熟练使用命令键; 4.运行结果正确,输入输出有提示,格式美观。 三、实验设备、材料和工具 1.奔腾2计算机或以上机型 2.turboc2,win-tc 四、实验内容和步骤 1. 建立一个含n个数据元素的顺序表并输出该表中各元素的值及顺序表的长度。 2. 往该顺序表中第i位置插入一个值为x的数据元素。 3. 从该顺序表中第j位置删除一个数据元素,由y返回。 4. 从该顺序表中查找一个值为e的数据元素,若找到则返回该数据元素的位置,否则返回“没有找到”。 五、程序 #include #include #define list_init_size 10 #define increment 2

typedef struct { int *elem; int length,listsize; }sqlist; //类型定义 void initlist_sq(sqlist &L) //初始化顺序表 { } void output(sqlist L) //输出顺序表 { } void insertlist(sqlist &L,int i, int x) //顺序表中插入x { } void deletelist(sqlist &L,int j, int y) //顺序表中删除y { } int locateelem(sqlist &L,int e) //顺序表中查找e { } void main() { } 【运行结果】 void initlist_sq(sqlist &L) //初始化顺序表 { L.elem=(int*)malloc(LIST_INIT_SIZE*sizeof(int)); if(!L.elem) exit (OVERFLOW);

数据结构与算法-实现顺序表的基本操作

实验报告 课程:数据结构与算法实验日期: 实验名称:实现顺序表的基本操作 一、实验目的 实现顺序表的熟练操作 二、实验内容 (1)先给出顺序表的类型定义 (2)给出顺序表的如下基本操作的算法函数定义 a) 构造一个空的线性表:InitList_Sq(SqList &L) b) 在顺序表L的第i个位置之前插入新的元素e:ListInsert_Sq(SqList &L, int i, ElemType e) c) 在顺序表L中删除第i个元素,并用e返回其值:ListDelete_Sq(SqList &L, int i, ElemType &e) (3)实现如下新操作的函数定义: a) 借助ListInsert_Sq操作创建一个顺序表:ListCreate_Sq(???) b) 计算线性表的长度:ListLength_Sq(???) c) 打印顺序表中的所有元素值:ListPrint_Sq(???) 其中???请自行考虑 (4)在主函数中分别调用ListCreate_Sq、ListPrint_Sq 、ListLength_Sq、ListInsert_Sq、ListDelete_Sq等函数,查看这些函数是否正常工作 三、实验步骤 (1)先给出顺序表的类型定义 (2)给出顺序表的如下基本操作的算法函数定义 a) 构造一个空的线性表:InitList_Sq(SqList &L)

b) 在顺序表L的第i个位置之前插入新的元素e:ListInsert_Sq(SqList &L, int i, ElemType e) c) 在顺序表L中删除第i个元素,并用e返回其值:ListDelete_Sq(SqList &L, int i, ElemType &e)

相关文档
最新文档