文档库 最新最全的文档下载
当前位置:文档库 › 《数据结构实验与实训教程(第4版)》程序代码

《数据结构实验与实训教程(第4版)》程序代码

《数据结构实验与实训教程(第4版)》程序代码
《数据结构实验与实训教程(第4版)》程序代码

目录

第一部分预备知识 (1)

预备知识 (1)

预备知识实验 (2)

第二部分基础实验 (4)

实验1 线性表的基本操作 (4)

实验2 链表的基本操作 (9)

实验3 栈的基本操作 (15)

实验4 队列的基本操作 (22)

实验5 数组的基本操作 (32)

实验6 字符串的基本操作 (36)

实验7 二叉树的基本操作 (41)

实验8 树的遍历和哈夫曼树 (46)

实验9 图的基本操作 (53)

实验10 排序 (59)

实验11 查找 (64)

第三部分课程设计实验 (69)

实验1 航空客运订票系统 (69)

实验2 汉诺塔游戏程序 (75)

实验3 全屏幕编辑程序设计 (79)

实验4 旅游路线安排模拟系统 (90)

实验6 最小生成树kruskal算法 (93)

第一部分预备知识

预备知识

例1.1

#include

int sumabc(int a, int b, int c) /* 求三个整数之和*/

{ int s;

a=b+c;

s=a+b+c;

return s;

}

void displayLine(void)

{ printf(”----------------------\n“);

}

void main( )

{ int x,y, z ,sabc;

x=y=z=8;

display(); /* 画一条线*/

printf(“\n sum=%d”,sumabc(x,y,z)); /* 在输出语句中直接调用函数sumabc( ) */ printf(“\n %6d%6d%6d”,x,y,z);

display();/* 画一条线*/

x=2; y=4; z=6;

sabc =sumabc(x, y, z); /* 在赋值语句中调用函数sumabc( ) */

printf(“\n “ sum=%d”, sabc);

printf(“\n %6d%6d%6d”,x,y,z);

display();/* 画一条线*/

}

例1.2

int sumabc(int *a, int b, int c)

{

i nt s;

*a=b+c;

s=*a+b+c;

return s;

}

预备知识实验

int main()

{ //在main函数中调用上述声明的函数

i nt n; //记录个数

STUDENT stu[MAXSIZE;// 顺序存储结构,方法一静态一维数组。

/*

顺序存储结构,方法二动态一维数组,用malloc函数分配如下:

STUDENT *stu;

stu=( STUDENT *) malloc(sizeof(STUDENT)* MAXSIZE);// 内存空间的分配

注意:分配空间可用malloc()函数, 释放空间用free()函数,如free(stu);

*/

int index;

printf("\n 请输入学生记录个数n="); scanf(%d”,&n);

InputStu(stu, n); // 预先处理输入, 建表

while(1) // 永真循环,重复显示菜单, 直至退出

{

printf("\n**********************学生信息管理主菜单**********************\n");

printf("\t1.显示学生信息\n");

printf("\t2.查找学生信息\n");

printf("\t3.修改学生信息\n");

printf("\t4.添加学生信息\n");

printf("\t5.退出\n\n");

printf("\t\t请选择(1~5): ");

scanf("%d",&index);

printf("\n**************************************************************\n");

swi tch(index) {

case 1: OutputStu(stu,n); break;

case 2: SearchStu(stu,n); break;

case 3: U pdateStu (stu,n); break;

case 4: A ppendStu (stu,&n); break;

case 5: return 0;

default: printf("\n输入有误,请重新输入! \n");

}//switch

}//while(1)}//main

第二部分基础实验

实验1 线性表的基本操作

四、参考程序

程序1:题1 线性表基本操作函数

#include

#include

#include

struct LinearList /*定义线性表结构*/

{

int *list; /* 存线性表元素 */

int size; /* 存线性表长度 */

int MaxSize; /* 存list数组元素个数 */

};

typedef struct LinearList LIST;

void InitList( LIST *L, int ms )/* 初始化线性表 */

{

if( (L->list = 1 ) == NULL ) { printf( "内存申请错误!\n" );

exit( 1 );

}

2

L->MaxSize = ms;

}

int InsertList( LIST *L, int item, int rc )

/* item:记录值 rc:插入位置 */

{

int i;

if( 3 ) /* 线性表已满 */

return -1;

if( rc < 0 ) /* 插入位置为 0 --> L->size */

rc = 0;

if( 4 )

rc = L->size;

for( i = L->size - 1; i >= rc; i-- ) /* 将线性表元素后移 */

5

L->list[rc] = item;

L->size ++;

return 0;

}

void OutputList( LIST *L )/* 输出线性表元素 */

{

int i;

for( i = 0; 6 i++ )

printf( "%d ", L->list[i] );

printf( "\n" );

}

int FindList( LIST *L, int item )/* 返回 >=0 为元素位置 -1 没找到 */ {

int i;

for( i = 0; i < L->size; i++ )

if( 7 ) /* 找到相同的元素,返回位置 */

return i;

return -1; /* 没找到 */

}

int DeleteList1( LIST *L, int item )

/* 删除指定元素值的线性表记录,返回>=0:删除成功 */

{

int i, n;

for( i = 0; i < L->size; i++ )

if( item == L->list[i] ) /* 找到相同的元素 */

break;

if( i < L->size ) {

for( n = i; n < L->size - 1; n++ )

L->list[n] = L->list[n+1];

L->size --;

return i;

}

return -1;

}

int DeleteList2( LIST L, int rc ) /* 删除指定位置的线性表记录 */

{

8 /*编写删除指定位置的线性表记录子程序*/

}

程序2:题2

void main()

{

LIST LL;

int i, r;

printf( "list addr=%p\tsize=%d\tMaxSize=%d\n", LL.list, LL.size, LL.MaxSize );

InitList( &LL, 100 );

printf( "list addr=%p\tsize=%d\tMaxSize=%d\n", LL.list, LL.size, LL.MaxSize );

while( 1 )

{

printf( "请输入元素值,输入0结束插入操作:" );

fflush( stdin ); /* 清空标准输入缓冲区 */

scanf( "%d", &i );

if( 1 )

break;

printf( "请输入插入位置:" );

scanf( "%d", &r );

InsertList( 2 );

printf( "线性表为: " );

3

}

while( 1 )

{

printf( "请输入查找元素值,输入0结束查找操作:" );

fflush( stdin ); /* 清空标准输入缓冲区 */

scanf( "%d", &i );

if( i == 0 )

break;

r = 4

if( r < 0 )

printf( "没找到\n" );

else

printf( "有符合条件的元素,位置为:%d\n", r+1 );

}

while( 1 )

{

printf( "请输入删除元素值,输入0结束查找操作:" );

fflush( stdin ); /* 清空标准输入缓冲区 */

scanf( "%d", &i );

if( i == 0 )

break;

r = 5

if( r < 0 )

printf( "没找到\n" );

else {

printf( "有符合条件的元素,位置为:%d\n线性表为:", r+1 );

OutputList( &LL );

}

}

while( 1 )

{

printf( "请输入删除元素位置,输入0结束查找操作:" );

fflush( stdin ); /* 清空标准输入缓冲区 */

scanf( "%d", &r );

if( r == 0 )

break;

i = 6

if( i < 0 )

printf( "位置越界\n" );

else {

printf( "线性表为:" );

OutputList( &LL );

}

}

}

程序4:题4

#define X 10

#define Y 30

#define N 20

int A[N]={ 2, 5, 15, 30, 1, 40, 17, 50, 9, 21, 32, 8, 41, 22, 49, 31, 33, 18, 80, 5 };

#include

void del( int *A, int *n, int x, int y )

{

int i, j;

for( i = j = 0; i < *n; i++ )

if( A[i] > y || A[i] < x ) // 不在x到y之间,则保留

1 ;

2 = j;

}

void output( int *A, int n )

{

int i;

printf( "\n数组有%d个元素:\n", n );

for( i = 0; i < n; i++ ) {

printf( "%7d", A[i] );

if( ( i + 1 ) % 10 == 0 )

printf( "\n" );

}

printf( "\n" );

}

void main()

{

int n;

n = N;

output( A, n );

3 ;

output( A, n );

}

实验2 链表的基本操作

四、参考程序

程序1:题1 链表基本操作函数

#include

#include

typedef struct list {

int data;

struct list *next;

}LIST;

void InitList( LIST **p )/* 初始化链表*/

{

1 /*编写初始化链表子程序*/

}

void InsertList1( LIST **p, int item, int rc )

/* 向链表指定位置[rc]插入元素[item] */

{

int i;

LIST *u, *q, *r; /* u:新结点q:插入点前驱r:插入点后继*/ u = ( LIST * )malloc( sizeof(LIST) );

u->data = item;

for( i = 0, r = *p ; 2 ; i++ ) {

q = r;

r = r->next;

}

if( 3 ) /* 插入首结点或p为空指针*/

*p = u;

else

4

u->next = r;

}

void InsertList2( LIST **p, int item )

/* 向有序链表[p]插入键值为[item]的结点*/

{

LIST *u, *q, *r; /* u:新结点q:插入点前驱r:插入点后继*/

u = ( LIST * )malloc( sizeof(LIST) );

u->data = item;

for( r = *p; 5 && r->data < item; q = r, r = r->next )

; /* 从链表首结点开始顺序查找*/

if( r == *p ) /* 插入首结点或p为空指针*/

6

else

q->next = u;

u->next = r;

}

/* 删除键值为[item]的链表结点, 返回0: 删除成功1:没找到*/

int DeleteList( LIST **p, int item )

{

LIST *q, *r; /* q:结点前驱r:结点后继*/

q = *p;

if( q == NULL ) /* 链表为空*/

return 1;

if( q->data == 7 ) { /* 要删除链表首结点*/ p = q->link; /* 更改链表首指针*/

8 /* 释放被删除结点的空间*/

return 0; /* 删除成功*/

}

for( ; 9 && 10 ; r = q, q = q->next )

; /* 寻找键值为[item]的结点*/

if( q->data == item ) { /* 找到结点*/

q->next=r->next /* 被删结点从链表中脱离*/ free( q ); /* 释放被删除结点的空间*/

return 0; /* 删除成功*/

}

return 1; /* 没有指定值的结点, 删除失败*/

}

/* 查找键值为[item]的链表结点位置, 返回>=1:找到-1:没找到*/ int FindList( LIST *p, int item )

{

int i;

for( i = 1; p->data != item && p != NULL ; 11 , i++ )

; /* 查找键值为[item]的结点*/

return ( p == NULL ) ? -1 : i; /* 找到返回[i] */

}

void OutputList( LIST *p ) /* 输出链表结点的键值*/

{

while( 12 ) {

printf( "%4d", p->data );

p = p->next; /* 遍历下一个结点*/

}

}

void FreeList( LIST **p ) /* 释放链表空间*/

{

LIST *q, *r;

for( q = *p; q != NULL; ) {

13

q = q->next;

14

}

*p = NULL; /* 将链表首指针致空*/

}

程序2:题2

void main()

{

LIST *p;

int op, i, rc;

InitList( &p ); /* 初始化链表*/

while( 1 )

{

printf( "请选择操作1:指定位置追加2: 升序追加3: 查找结点\n" );

printf( "4:删除结点5:输出结点6: 清空链表0:退出\n" );

fflush( stdin ); /* 清空标准输入缓冲区*/

scanf( "%d", &op );

switch( op ) {

case 0:/* 退出*/

return;

case 1:/* 指定位置追加结点*/

printf( "请输入新增结点键值和位置:" );

scanf( "%d%d", &i, &rc );

1 ;

break;

case 2:/* 按升序追加结点*/

printf( "请输入新增结点键值:" );

scanf( "%d", &i );

InsertList2( &p, i );

break;

case 3:/* 查找结点*/

printf( "请输入要查找结点的键值:" );

scanf( "%d", &i );

rc = 2 ;

if( rc > 0 )

printf( "位置为[%d]\n", rc );

else

printf( "没找到\n" );

break;

case 4:/* 删除结点*/

printf( "请输入要删除结点的键值:" );

scanf( "%d", &i );

rc = 3 ;

if( rc == 0 )

printf( "删除成功\n", rc );

else

printf( "没找到\n" );

break;

case 5:/* 输出结点*/

printf( "\n链表内容为:\n" );

4 ;

break;

case 6:/* 清空链表*/

5 ;

break;

}

}

}

程序3:题3

#include

#include

typedef struct node {

int x;

struct node *next;

}NODE;

void input( NODE **a )

{

NODE *p, *q;

int i;

printf( "请输入链表的元素,-1表示结束\n" ); *a = NULL;

while( 1 ) {

scanf( "%d", &i );

if( i == -1 )

break;

p = ( NODE * )malloc( sizeof(NODE) );

p->x = i;

p->next = NULL;

if( *a == NULL )

*a = q = p;

else {

q->next = p;

q = q->next;

}

}

}

void output( NODE *a )

{

int i;

for( i = 0; a != NULL; i++, a = a->next ) { printf( "%7d", a->x );

if( ( i + 1 ) % 10 == 0 )

printf( "\n" );

}

printf( "\n" );

}

void disa( NODE *a, NODE **b )

{

NODE *r, *p, *q;

p = a;

r = *b = ( a == NULL ) ? NULL : a->next; // 如果链表a为空,则链表b也为空while( 1 && 2 ) {

q = p->next; // q指向偶数序号的结点

3 // 将q从原a链表中删除

r->next = q; // 将q结点加入到b链表的末尾

4 // r指向b链表的最后一个结点

p = p->next; // p指向原a链表的奇数序号的结点

}

r->next = NULL; // 将生成b链表中的最后一个结点的next域置空

}

void main()

{

NODE *a, *b;

input( &a );

printf( "链表a的元素为:\n" );

output( a );

5

printf( "链表a的元素(奇数序号结点)为:\n" );

output( a );

printf( "链表b的元素(偶数序号结点)为:\n" );

output( b );

}

实验3 栈的基本操作

四、参考程序

程序1:题1 栈的基本操作函数

#include

#define MAXN 10 /* 栈的最大容量 */

/* 定义栈的类型为int */

int push( int *stack, int maxn, int *toppt, int x )/* 进栈函数 */ {

if( *toppt >= maxn ) /* 1 */

return 1;

2 /* 元素进栈 */

++(*toppt); /* 栈顶指针+1 */

return 0; /* 进栈成功 */

}

int pop( int *stack, int *toppt, int *cp ) /*出栈函数*/

{

if( 3 ) /* 栈空,出栈失败,返回1 */

return 1;

--(*toppt); /* 栈顶指针-1 */

4

return 0; /* 出栈成功 */

}

void OutputStack( int *stack, int toppt ) /* 输出栈元素 */

{

int i;

for( i = 5 ; i >= 0; i-- )

printf( "%d ", stack[i] );

printf( "\n" );

}

程序2:题2 主函数

void main()

{

int s[MAXN], i; /* 定义栈 */

int top = 0; /* 设置为空栈 */

int op;

while( 1 )

{

printf( "请选择操作,1:进栈 2:出栈 0:退出 " );

fflush( stdin ); /* 清空标准输入缓冲区 */

scanf( "%d", &op );

switch( op ) {

case 0: /* 退出 */

return;

case 1: /* 进栈 */

printf( "请输入进栈元素:" );

scanf( "%d", &i );

if( 1 ) { /* 进栈成功 */

printf( "进栈成功,栈内元素为:\n" );

OutputStack( s, top );

}

else

printf( "栈满\n" );

break;

case 2: /* 出栈 */

if( 2 ) { /* 出栈成功 */

printf( "出栈元素为: [%d] , 栈内元素为:\n" , i );

3

}

else

printf( "栈空\n" );

break;

}

}

}

程序3:题3 配对函数

int correct( char *exp, int max )/* 传入参数为表达式、表达式长度,返回0:成功,返回1:错误*/

{

int flag = 0; /* 括号匹配标志,0: 正确 */

char s[MAXN]; /* 定义栈 */

int top = 0; /* 栈指针为0,表示空栈 */

char c;

int i;

for( i = 0; 1 ; i++ ) {

/* 循环条件为表达式未结束且括号匹配 */

if( exp[i]=='(' || exp[i]=='[' || exp[i]=='{' }

push( s, MAXN, &top, exp[i] );

if( exp[i]==')' || exp[i]==']' || exp[i]=='}' ) {/* 遇到},},}, 出栈 */

2 /* 置出栈结果, 栈空出错 */

if( ( exp[i]==')' && c!='(' ) || ( exp[i]==']' && c!='[' )

|| ( exp[i]=='}' && c!='{' ) ) /* 括号不匹配 */

flag = 1;

}

}

if( 3 ) /* 栈不为空,表明还有(,[,{符号没匹配 */ flag = 1;

return flag;

}

void main()

{

char s[MAXN], c; /* 定义栈 */

char exp[1024];

int top = 0; /* 设置为空栈 */

while( 1 ) {

printf( "请输入表达式, 输入0退出: " );

gets( exp ); /* 从标准输入中读取表达式 */

exp[MAXN] = '\0'; /* 表达式长度 <= MAXN */

if( strcmp( exp, "0" ) == 0 )

4

if( 5 )

printf( "表达式内容为:\n%s\n表达式括号不匹配\n" , exp );

else

printf( "表达式括号匹配\n" );

}

}

程序4:题4 波兰表达式

#include

#include

#define MAXN 100 /* 栈的最大容量 */

int pushc( )/* char型元素进栈函数 */

{

/*编写进栈子程序*/

}

int popc( char *stack, int *toppt, char *cp ) /* char型元素出栈函数 */ {

/*编写出栈子程序*/

}

int eval( )/* 算术运算 */

{

/*编写算术运算子程序*/

}

int operate( char *str, int *exp )/* 计算后缀表达式的值, 返回0:成功 -1:表达式错误 -2:栈满 */

{

char c;

int opd1, opd2, temp, c1;

int s[MAXN];

int i;

int top = 0;

for( i = 0; str[i] != '\0'; i++ ){

c = str[i];

if( c >= '0' && c <= '9' ){ /* 数字进栈 */

c1 = c - '0'; /* 将字符转换成数字值 */

if( push( s, MAXN, &top, c1 ) != 0 ){

printf( "表达式太长, 栈满" );

return -2;

}

}

else if( c == '+' || c == '-' || c == '*' || c == '/' )

{ /* 运算符 */

pop( s, &top, &opd1 );

if( pop( s, &top, &opd2 ) != 0 )

return -1;

temp = eval( c, opd2, opd1 );

1 ;

}

else

return -1;

}

2 /* 取出结果 */

if( top != 0 ) /* 栈非空 */

return -1;

return 0;

}

int trans( char *sin, char *sout )/* 将中缀表达式转换成后缀, 返回0: 处理成功*/

{

char s[MAXN], c; /* 定义栈, 栈元素 */

3 /* 设置为空栈 */

int off = 0; /* 数组下标 */

int i;

for( i = 0; sin[i] != '\0'; i++ ) /* 遇到休止符, 表示表达式输入结束 */ if( sin[i] >= '0' && sin[i] <= '9' ) /* 输入数字, 进数组 */

sout[ 4 ] = sin[i];

else switch( sin[i] ) {

case '(': /* 左括号, 括号入栈 */

pushc( s, MAXN, &top, sin[i] );

break;

case ')': /* 右括号, 将栈中左括号前的元素出栈, 存入数组 */

while( 1 ){

if( popc( s, &top, &c ) != 0 ){ /* 栈空 */

printf( "表达式括号不匹配\n" );

return -1;

}

if( c == '(' ) /* 找到匹配的括号 */

break;

sout[ off++ ] = c; /* 栈顶元素入数组 */

}

break;

case '+': /* 为'+','-',将栈中左括号前的元素出栈, 存入数组 */

case '-':

while( top > 0 && s[top-1] != '(' ) {

5

软件工程-银行储蓄管理系统源代码

package src.day01; public class ACC { //父类,以下是共有属性和方法 //卡号 protected static long id; // 名字 protected static String name; // 身份证 protected static String personId; //电子邮件 protected static String email; // 密码 protected static long password; //余额 protected static double balance; public ACC(){ } public ACC(long id,String name,String personId,String email,long password,double balance ){ this.id = id; https://www.wendangku.net/doc/723226562.html, = name; this.personId = personId; this.email = email; this.password = password; this.balance = balance; } // 存款方法 public static void deposit(double money){ balance += money; System.out.println("存款成功,你存入的金额为:" + money); } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { https://www.wendangku.net/doc/723226562.html, = name; } public String getPersonId() {

DMG 海德汉iTNC 操作培训

DMG培训照片文件整理总结(详见机床操作说明书) 目录: 一.手动拆刀和装刀: 1.进入手动模式。 2.按刀具表软件,进入刀具表。 3.打开编辑开关。 4.建刀库刀位以外的刀具。 5.按结束。 6.进入MDI模式。 7.调用刚建立的刀具。 8.按START键执行。 9.显示更换刀具。 10.按开门键,打开工件间门。 11.按换刀键。 12.屏幕T 开始闪烁。 13.旋转按刀按扭,听到有松夹声音。 14.注意刀具的缺口方向,放刀具到位,松开换刀按扭,听到夹紧的声音,松开刀具。 15.刀具在主轴。 16.关闭工作间的门。 17.屏幕显示更换刀具。 18.刀具已经换入。 19.确认换刀完成。 20.换刀结束, 二.手动拆除刀库以外的刀具。 1.按MDI 进入 2.调用零号刀具。 3.按START 键执行。 4.屏幕显示从轴上取下刀具。 5.按开门键开工作间门。 6.按换刀键。 7.屏幕T 开始闪烁。 8.用手拿住刀具。 9.旋转拆刀旋扭,拆除刀具。 10.关闭工作间的门。 11.屏幕显示 T0 。 12.屏幕显示从轴人取下刀具,按START 键完成拆刀。 三.从刀库装入刀具。 1.按手动按扭,进入手动数据输入。 2.按刀具表软键,进入刀具表。 3.把光标移到要装入刀具的一行。 4.按左边的刀库管理软键。 5.按刀具拆除, 6.等待屏幕显示 1。20(1号刀库,20号刀位),刀库已经准备好。 7.因为只是装刀,并不是真正拆除,所以按中断结束。 8.打开后面的刀库门,放入刀具,注意缺口方向在里面,完成刀库装刀。

2.把光标移到要拆除的刀具的一行。 3.按刀具管理软键。 4.按刀具拆除。 5.屏幕显示(1。32)一号刀库32号刀位。 6.按中断软键,不清除刀具参数。 7.打开刀库门,拆除刀具。 8.手动清除刀具数据,按结束,完成刀库拆除刀具。 五.标准刀的校正Z零点。 1.把标准刀放入32号刀位。按MDI 进入。 2.调用32号刀具。 3.按START 执行。 4.调入标准刀具。 5.在刀具表中输入,标准刀的长度和半径。 6.移动标准刀在工作台上方50MM 处。用50MM的标准块测量,精度到0。001MM。 7.进入设定原点界面。 8.按设定原点软键。 9.输入Z+50 10.按ENT 键确认。 11.按预设表软键,进入。 11.进入预设表 12.把工作台设为Z零点。标准刀的校正Z零点完成 (工作台有-0。0397的误差,会在后面,五轴精度校准中校正) 探头校正方法 1. 用基准刀找到机床工作台面的机械坐标.(用50mm标准块) 2. 调出探头,把探头移动到距离工作台面20MM的地方,执行探头长度标定(该选项在打开探头功能看到两个标定的第一项)。标定完成后会看到探头的实际自动的写到刀具补偿里面。 3. 用机床配置的内径为50的环规做探头摆动的标定。做法为把探针动到环规的上表面-10MM左右的地方执行探头半径标定,{该选项在打开探头功能看到两个标定的第一项}(做这项这前要用千分表测出探头放在主轴上的摆动值不能超过5μm如果摆动太大要用装探头的木盒配的六角匙调整探头下表面的四个螺母,调整后探头的摆动越少越好) 六.探头直径校正 1.调用探头,用丝表校探头最高点在0。005MM以内,在刀具表中建立探头数据,L (探头长度)R(探头半径)和PLC参数00010100。 2.如果探头不正,用六角松开校正。 2.用铜棒或木棒轻轻敲击校正。 4,校正好后,按探测功能软键。 5.选择标定R功能。 6.把探头移到环规的中心。 7.记录环规的直径。 8.输入环规的半径和探头的半径。 9.按+X 软键,确定方向。 10.按START 执行测量。 11.屏幕显示X+的测量数据。 12.按START 键执行下面的测量。 13.按180 度软键, 14.START 执行 15.完成测量

学生管理系统程序源代码

#include <> #include <> struct student { long int num; char name[20]; int age; char sex[4]; int e; char m[20]; char b[30]; char p[15]; }; int n=0; struct student stu[100]; struct student *p; void lr(); void ll(); void cx(); void xg(); void sc(); void bc(); void dq(); void px(); void main() { int z; printf("+---------------------------+\n"); printf("| 欢迎使用学生档案管理系统 |\n"); printf("+---------------------------+\n"); printf("提示:为保证您的操作得到保存,请按正常顺序退出系统^_^\n"); do { printf("\n\t\t\t--------------------------------\n"); printf("\t\t\t+ 主菜单 |\n"); printf("\t\t\t--------------------------------\n"); printf("\t\t\t+ [1]----录入学生信息 |\n"); printf("\t\t\t+ [2]----浏览学生信息 |\n"); printf("\t\t\t+ [3]----查询学生信息 |\n"); printf("\t\t\t+ [4]----删除学生信息 |\n"); printf("\t\t\t+ [5]----修改学生信息 |\n");

数据结构_实验1_线性表的基本操作

实验1 线性表的基本操作 一、需求分析 目的: 掌握线性表运算与存储概念,并对线性表进行基本操作。 1.初始化线性表; 2.向链表中特定位置插入数据; 3.删除链表中特定的数据; 4.查找链表中的容; 5.销毁单链表释放空间; 二、概要设计 ●基础题 主要函数: 初始化线性表InitList(List* L,int ms) 向顺序表指定位置插入元素InsertList(List* L,int item,int rc)删除指定元素值的顺序表记录DeleteList1(List* L,int item) 删除指定位置的顺序表记录 DeleteList2(List* L,int rc) 查找顺序表中的元素 FindList(List L,int item) 输出顺序表元素OutputList(List L) 实验步骤: 1,初始化顺序表 2,调用插入函数 3,在顺序表中查找指定的元素 4,在顺序表中删除指定的元素 5,在顺序表中删除指定位置的元素 6,遍历并输出顺序表 ●提高题

要求以较高的效率实现删除线性表中元素值在x到y(x和y自定义)之间的所有元素 方法: 按顺序取出元素并与x、y比较,若小于x且大于y,则存进新表中。 编程实现将两个有序的线性表进行合并,要求同样的数据元素只出现一次。 方法: 分别按顺序取出L1,L2的元素并进行比较,若相等则将L1元素放进L中,否则将L 1,L2元素按顺序放进L。 本程序主要包含7个函数 主函数main() 初始化线性表InitList(List* L,int ms) 向顺序表指定位置插入元素InsertList(List* L,int item,int rc)删除指定元素值的顺序表记录DeleteList1(List* L,int item) 删除指定位置的顺序表记录 DeleteList2(List* L,int rc) 查找顺序表中的元素 FindList(List L,int item) 输出顺序表元素OutputList(List L) 提高题的程序 void Combine(List* L1,List* L2,List* L) void DeleteList3(List* L,int x,int y) 二、详细设计 初始化线性表InitList(List* L,int ms) void InitList(List* L,int ms) { L->list=(int*)malloc(LIST_INIT_SIZE*sizeof(int)); L->size=0; L->MAXSIZE=LIST_INIT_SIZE;

1海德汉中文使用说明书[1]

1前言

1.1TNC 426,TNC 430 HEIDENHAIN TNC是一种面向生产车间的仿型控制器,使您能以一种便于使用的对话式编程语言,编制使机床准确加工运转的对话式程序。TNC控制器可用于铣削、钻孔和镗削加工,也可用于加工中心。TNC 426最多可控制五根轴;TNC 430最多可控制九根轴。您也可在程序控制下改变主轴的角度位置。 一体化的硬盘能存储许多您所喜欢的程序,不论这些程序是脱机创建的还是数字化的。为了能快速计算,随时随地都能在屏幕上调出袖珍计算器。 键盘和屏幕布局清晰合理,功能调用快捷,使用方便。 编程:HEIDENHAIN对话式和ISO格式 HEIDENHAIN对话式编程是一种特别容易的程序写入方法,交互式的图形表示仿型编程的各个加工步骤。如果某一张生产图纸没有标注NC适用的尺寸,HEIDENHAIN FK任意形状轮廓编程就会自动执行必要的计算。工件的加工状况,无论是现在正在加工中还是在加工之前,都能用图形模拟显示。在ISO编程格式或DNC模式中都由此功能。 当TNC在运行另一段程序时,您也可输入或测试一段程序。 兼容性 TNC能执行所有写在TNC 150B及以后的HEIDENHAIN 控制器上的零件程序。

1.2可视显示器和键盘 可视显示器 TNC显示器可使用CRT彩色显示器(BC120)或TFT 液晶显示器(BF120)。右上图为BC120的键盘和控制器,右中图为BF120的键盘和控制器。 屏幕端部 当TNC接通电源时,屏幕端部显示选定的操作方式:左侧为加工方式,右侧为编程模式。当前激活的模式显示在一个较大的方框中,在此方框中,同时也显示对话提示和TNC信息(如果没有,则仅显示图形)。 软键 TNC底部一排软键表示辅助功能。直接按下这些键,即可选用这些辅助功能。紧接着软键行上面的行表示软键的编号,可以左右移动黑色光标调用。 被激话的软键行高亮显示。 软键选择键 切换软键行 设置屏幕布局 用于转换加工和编程模式的移位键 仅在BC120上的键 屏幕退磁:为屏幕设置退出主菜单 为屏幕设置选择主菜单: 在主菜单中:高亮显示部向下移动 在子菜单中:减小数值;图形向左或向下移动 在主菜单中:选择子菜单 在子菜单中:退出子菜单 主菜单对话功能 CONTRAST调节对比度 H-POSITION调节水平位置

超市管理系统完整+源代码

有一个小型超市,出售N(N>=10)种商品,设计并实现一个系统,完成下列功能: 1.保存及输出。超市中的各种商品信息保存在指定文件中,可以把它们输出显示。 2.计算并排序。计算每类商品的总价值(sum,单精度)及平均价(aver,单精度,输出一位小数),将每类商品按平均价从大到小的顺序排序打印出来。 3.统计。统计输出库存量低于100的货号及类别。统计输出有两种以上(含两种)商品库存量低于100的商品类别。 1.2总体结构 本程序主要分为八个模块:主模块、信息输出修改模块、新建信息模块、排序模块、计算模块、统计模块1、统计模块2、打印模块。 1)主模块:通过调用各分模块实现功能; 2)信息输出修改模块:输出显示文件中商品信息内容,添加商品信息,删除商品信息,修改商品信息; 3)新建商品信息模块:建立一个新结构体,为链表存信息用,并且将信息保存在指定的文件中; 4)排序模块:把文件中顺序零乱的商品信息按单价的大小从高到低进行排序,放到链表里存储; 5)计算模块:将所有商品的价格与库存量进行累加求和; 6)打印模块:将商品信息按每类平均价格排序(从高到低)按顺序打印出来;7)统计模块1:统计库存量低于100的货名及类别; 8)统计模块2:统计商品库存量有2种以上(含2种)低于100的商品类别。附录(程序清单)

#include "stdio.h" /*输入,输出头文件*/ #include "stdlib.h" /*申请空间头文件*/ #include "string.h" /*对字符串加工头文件*/ #include "conio.h" /*清屏头文件*/ FILE *fp; int n=0; /*定义文件指针类型*/ int i,j,a[4],m; /*定义整数类型*/ float aver[4],sum[4],g[4],h; /*定义浮点类型*/ char c[5]="elec"; /*定义字符数组类型*/ char d[5]="comm"; /*定义字符数组类型*/ char e[5]="food"; /*定义字符数组类型*/ char f[5]="offi"; /*定义字符数组类型*/ struct good /*定义结构体*/ { int num; /*商品编号*/ char name[20]; /*商品名称*/ char kind[40]; /*商品类型*/ float price; /*商品价格*/ char unit[10]; /*商品单位*/ int quantity; /*商品数量*/ struct good *next; /*定义结构体指针类型*/ }*head,*p1,*p2; struct good *createlist() /*创建链表函数*/ { struct good *head1,*p1,*p2; /*定义结构体指针类型*/

数据结构实现顺序表的各种基本运算(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

1226海德汉530系统编程和操作说明书

百度文库 - 让每个人平等地提升自 我 NC 软件 340 420-xx 用户手册 HEIDENHAIN 会话格式

可视显示器上的控制器 切换屏幕布局 在加工或编程模式之间切换 选择屏幕上功能的软键 切换软键行 输入字母和符号的打字键盘 文件名 注释 ISO 程序机床操作模式 手动操作 电子手轮 通过MDI进行定 位单步程序运行 连续程序运行 编程模式 编程和编辑 试运行 程序/文件管理器TNC功能 选择或删除程序或文件 外部数据传输在程序中 输入程序调用 MOD功能 显示NC错误信息的帮助文本 袖珍计算器 移动高亮区直接到程序块循环和参数功能 移动高亮区 直接到程序块循环和参数功能 进给速度/主轴速度倍率控制旋钮编程路径移动 切入/切出轮廓 FK自由轮廓编程 直线 圆的中心/极坐标极心 圆及圆心 圆及半径相切连 接的圆弧 倒角 圆角 刀具功能 输入和调用刀具长度和半径 循环子程序和程序段重复 定义和调用循环 输入和调用子程序和程序段重复标号程序中间程序停止在程 序中输入探头功能 坐标轴和编号输入和编辑 选择坐标轴或输入坐标轴到程 序中编号 小数点 改变算术符号 极坐标 增量尺寸 Q参数 捕捉实际位置 跳过对话问题删除字 确认输入并恢复对话 结束块 清除数字输入或清除TNC错误信息 中止对话删除程序段

百度文库 - 让每个人平等地提升自我 TNC 型号软件和特性 本手册说明了TNC按以下NC软件号提供的功能和特性 TNC型号NC软件号 iTNC 530 340 420-xx iTNC 530E 340 421-xx 后缀E表示TNC的出口版本TNC的出口版本具有以下限制 可同时在不超过4个轴上进行直线移动 机床制造商通过设置机床参数修改机床TNC可用特性本手册中描述的一些功能可能在您的机床上没有提供 您的机床上可能没有提供的TNC功能包括 3维探头探测功能 使用TT 130进行刀具测量 攻丝刚性 在中断后返回轮廓 请与您的机床制造商联系以熟悉您的机床的特性 许多机床制造商以及HEIDENHAIN提供TNC的编程课程我们推荐这些课程因为这是提高您的编程能力和与其他TNC用户共享信息和想法的有效途径 探头循环用户手册 在另外手册中描述了所有探头功能如果需 要该用户手册的拷贝请与HEIDENHAIN联 系手册ID编号369 280-xx 使用地点 TNC遵守EN55022规范对A类设备的限制并主要用于工业化区域

超市管理系统完整+源代码

超市管理系统完整+ 源代码 1

有一个小型超市,出售N(N>=10)种商品,设计并实现一个系统,完 成下列功能: 1.保存及输出。超市中的各种商品信息保存在指定文件中,能够把它们输出显示。 2.计算并排序。计算每类商品的总价值(sum,单精度)及平均价(aver,单精度,输出一位小数),将每类商品按平均价从大到小的顺序排序打印出来。 3.统计。统计输出库存量低于100的货号及类别。统计输出有 两种以上(含两种)商品库存量低于100的商品类别。 1.2总体结构 本程序主要分为八个模块:主模块、信息输出修改模块、新建信息模块、排序模块、计算模块、统计模块1、统计模块2、打印模块。 1) 主模块:经过调用各分模块实现功能; 2) 信息输出修改模块:输出显示文件中商品信息内容,添加商品信息,删除商品信息,修改商品信息; 2

3) 新建商品信息模块:建立一个新结构体,为链表存信息用,而且将信息保存在指定的文件中; 4) 排序模块:把文件中顺序零乱的商品信息按单价的大小从高到低进行排序,放到链表里存储; 5) 计算模块:将所有商品的价格与库存量进行累加求和; 6) 打印模块:将商品信息按每类平均价格排序(从高到低)按顺序打印出来; 7) 统计模块1:统计库存量低于100的货名及类别; 8) 统计模块2:统计商品库存量有2种以上(含2种)低于100的商品类别。 附录(程序清单) #include "stdio.h" /*输入,输出头文件*/ #include "stdlib.h" /*申请空间头文件*/ #include "string.h" /*对字符串加工头文件*/ #include "conio.h" /*清屏头文件*/ FILE *fp; 3

顺序表的基本操作

《数据结构》实验报告一 顺序表的基本操作 班级:网络工程学号:12015242183 实验日期:2016.9.25 姓名:邓宗永 程序文件名及说明:sequenlist 顺序表 一、实验目的 1、掌握使用Turbo C3.0上机调试线性表的基本方法; 2、掌握顺序表的基本操作:插入、删除、查找以及线性表合并等运算。 二、实验要求 1、认真阅读和掌握实验的程序。 2、上机运行程序。 3、保存和打印出程序的运行结果,并结合程序进行分析。 4、按照你对线性表的操作需要,编写写主程序并运行,打印出文件清单和运行结果 三、注意事项: 在磁盘上创建一个目录,专门用于存储数据结构实验的程序。 四、实验内容 1.顺序表的查找、插入与删除。设计算法,实现线性结构上的顺序表的产生以及元素的查找、插入与删除。具体实现要求: (1)从键盘输入10个整数,产生顺序表,并输入结点值。 (2)从键盘输入1个整数,在顺序表中查找该结点的位置。若找到,输出结点的位置;若找不到,则显示“找不到”。 (3)从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x 插入在对应位置上,输出顺序表所有结点值,观察输出结果。 (4)从键盘输入1个整数,表示欲删除结点的位置,输出顺序表所有结点值,观察输出结果。 五、实验报告必须写明内容 1.程序设计的基本思想,原理和算法描述:(包括程序的结构,数据结构,输入/输出设 计,符号名说明等) 程序的结构:通过子函数实现输出,删除,插入,查找等功能,高耦合低内聚 数据结构:线性结构,顺序储存 输入/输出设计:根据屏幕提示,从键盘读取数据 2.源程序及注释: #include #include typedef int datatype; #define maxsize 10 typedef struct //创建一个顺序表包含10个整数

网上书店管理系统附程序源代码

网上书店管理系统附程序源代码

数据库与管理信息系统 报告题目:网上书店管理系统 学院:信息工程与自动化学院 专业:计算机科学与技术 年级: 09级 学生姓名: 指导教师: 日期: -6-3 教务处制 目录

一、需求分析; ....................................................... 错误!未定义书签。 二、系统设计内容; ................................................ 错误!未定义书签。 三、系统逻辑设计; ................................................ 错误!未定义书签。 四、系统功能需求分析; ........................................ 错误!未定义书签。 五、总结;................................................................ 错误!未定义书签。 六、参考资料; ........................................................ 错误!未定义书签。 七、附录;................................................................ 错误!未定义书签。 一、需求分析; 网上书店系统主要是实现网上选书、购书、产生订单等功能的系统。一个典型的网上商城一般都需要实现商品信息的动态提示、购物车管理、客户信息注册登录管理、订单处理等模块。 根据网上书店的基本需求,本系统需要完成的具体任务如下: 1)书图查询: 当客户进入网上书店时,应该在主页面中分类显示最新的书目信息,以供客户选择所需图书,同时也应该提供按照图书名称,或者作者信息快速查询所需书目信息的功能。 2)购物车管理:当客户选择购买某图书产品时,应该能够将对应图书信息,如:价格、数量记录到对应的购物车中,并允许客户返回书目查询页面,选择其它商品,并添加到购物车中,当对应的购物订单生成后,应该能够自动清除以生成订单的购物车

顺序表的基本操作 (2)

顺序表的基本操作 /*sqList.h 文件*/ #define LIST_INIT_SIZE 50 /*初始分配的顺序表长度*/ #define INCREM 10 /*溢出时,顺序表长度的增量*/ #define OVERFLOW 1 #define OK 0 #define ERROR -1 typedef int ElemType; /*定义表元素的类型*/ typedef struct SqList{ ElemType *elem; /*存储空间的基地址*/ int length; /*顺序表的当前长度*/ int listsize; /*当前分配的存储空间*/ }SqList; /*sqListOp.h 文件*/ #include "Sqlist.h" int InitList_sq(SqList &L); //顺序表创建函数定义 void FreeList_sq(SqList &L); //顺序表销毁函数定义 int ListInsert_sq(SqList &L, int i, ElemType e); //在顺序表的位置i插入元素e void PrintList_sq(SqList &L); //遍历并输出顺序表所有元素 int ListDelete_sq(SqList &L, int i,ElemType &e); //删除顺序表第i个元素的 bool ListEmpty(SqList &L); //判断顺序表是否为空 int LocateElem_sq(SqList L,ElemType e); //在顺序表里查找出第1个与e相等的数据元素位置//已知线性表La和Lb的元素按值非递减排列 //归并后的La和Lb得到新的顺序线性表Lc,Lc的元素也是按值非递减排列 void MergeList_sq(SqList La,SqList Lb, SqList &Lc); /*sqListOp.cpp文件*/ #include #include #include #include "sqlistOp.h" //创建顺序表 int InitList_sq(SqList &L) { L.elem = (ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType)); if (!L.elem) exit(OVERFLOW); /*初始化失败,返回0*/ L.length = 0; /*置空表长度为0*/ L.listsize = LIST_INIT_SIZE; /*置初始空间容量*/ return OK; /*初始化成功,返回1*/

6-2海德汉中文使用说明书

125 6.4 仿型路径—直角座标 路径功能的概述 直线L 直线 直线终点座标 倒角:CHF 两条直线交点处倒角 倒角边长 圆心CC 刀具不移动 圆心或极心座标 圆C 围绕圆心CC 圆弧移动到圆弧终点 圆弧终点座标,转动方向 圆弧CR 确定半径的圆弧 圆弧终点座标,圆弧半径,转动方向 圆弧CT 和前后型面切线连接的圆弧移动 圆弧终点座标 圆角RND 和前后型面切线连接的圆弧移动 修圆的圆角半径 FK 自由编程 和前一个型面任意连接的直线或者圆弧移动 参阅144页“仿型路径—FK 自由仿型编程”

126 直线L 刀具沿着直线从当前位置移动到直线结束点,该直线的起始点为前一行程序的结束点。 直线结束点的座标 必要时进一步输入: 半径补偿RL/RR/R0 进给率F 辅助功能M NC 程序实例 实际位置归零 您也可用ACTUAL-POSITION-CAPTURE (实际位置归零)键建立直线程序行: 在手动操作模式中,把刀具移动到您要归零的位 置上。 屏幕显示切换到编程和编辑。 选定您要插入L 程序行位置的前一程序行。 按下实际位置归零键:TNC 用当前 的实际位置的座标建立一行程序。, 在MOD 功能中,规定保存在L 程序行中的轴的数量(参阅398页“MOD 功能)。

在两条直线之间插入倒角CHF 倒角功能可以使您切去两条直线交点处的尖角。 ?CHF前后的程序行必须是在同一个平面中的。 ?CHF前后的半径补偿必须相同。 ?内倒角必须足够大,以能容纳在用的刀具。 倒角边长:倒角长度 必要时进一步输入: 进给率F(只在CHF程序行中有 效)。 NC程序行实例 ?您不能用CHF程序行开始仿 型。 倒角只能在加工面中。 尖角被修平,不作为轮廓的一 部分。 CHF程序行中编程的进给率只 对该程序行有效,在CHF程序行以 后,原先编程的进给率恢复有效。 127

学生成绩管理系统源程序

#include #include #include #define PF printf #include "time.h " #define LEN sizeof(struct St1) //定义结构体// typedef struct St1 { char IDNumber[16];/*学号*/ char FamilyName[16]; /*姓*/ char GivenName[16]; /*名*/ int sex; /*性别(0代表"女",1代表"男")*/ int BirthYear; /*出生年*/ int BirthMonth; /*出生月*/ int BirthDay; /*出生日*/ float score0,score1,score2,score3; /*成绩*/ float sum; /*总分*/ float average; /*平均分*/ struct St1 *next; }StudentNode; int time() { struct tm* ptm; long ts; int y,m,d,h,n,s; ts = time(NULL); ptm = localtime(&ts); y = ptm-> tm_year+1900; //年 m = ptm-> tm_mon+1; //月 d = ptm-> tm_mday; //日 h = ptm-> tm_hour; //时 n = ptm-> tm_min; //分 s = ptm-> tm_sec; //秒 return(y); } StudentNode *head=NULL; //全局指针 int n,i=0,c=0,d=0,j=0; //全局变量j在函数中作数组下标或循环变量c为总分数组中元素个数d为平均分数组元素个数 float English=0.0,Math=0.0,C=0.0,Mazhe=0.0,Sum[100],Avr[100]; //全局变量

顺序表的实现

数据结构实验顺序表的实现 姓名 学号 专业班级

实验名称:顺序表的实现 一.实验目的: 1.掌握线性表的顺序存储结构; 2.验证顺序表的基本操作的实现; 3.理解算法与程序的关系,能够将顺序表转换为对应程序; 二.实验内容: 1.建立含有若干元素的顺序表; 2.对已建立的顺序表实现插入、删除、查找等基本操作; 三.算法设计 1.建立顺序表并初始化 1)顺序表的大小为MaxSize,存入元素的下标为n a.如果n>MaxSize,则抛出参数非法; b.将元素a[i]赋值给线性表中元素序号为i的元素; 2.顺序表的插入 1)如果表满了,则抛出上溢异常; 2)如果元素插入的位置不合理,则抛出位置异常; 3)将最后一个元素及第i个元素分别向后移动一个位置; 4)将要插入的元素x填入为位置i处; 5)表长加1; 3.顺序表的删除 1)如果表空,则抛出下一异常;

2)如果删除的位置不合理,则抛出删除位置异常; 3)取出被删元素; 4)将下表为i至n-1的元素分别向前移动1个元素; 5)表长减一,返回被删元素值; 4.顺序表的查找 A.按位查找 1)如果查找的位置不合理,则抛出查找的不合理; 2)返回被查找的元素值; B.按值查找 1)若查找成功,返回被查找元素的序号; 2)若查找失败,则返回0; 四.部分代码 文件名称:SeqList.h #define SEQLIST_H const int MaxSize = 5; template class SeqList{ publi#ifndef SEQLIST_H c: SeqList(); //默认构造函数 SeqList(T a[],int n); //数组a传递数据元素信息,n表示元素个数 ~SeqList(); //析构函数 int Length(); //返回顺序表的长度 void Insert(int i,T x);//在第i个位置插入数据元素x T Get(int i); //得到第i个位置上的数据元素 T Delete(int i); //删除第i个位置上的数据元素 int Locate(T x); //在顺序表中查找数据元素x,并返回它的位置,否则返回0. void PrintList(); //打印顺序表中的数据元素信息。 private: T data[MaxSize]; //数组data用来存放顺序表的数据元素 int length; //length表示顺序表中数据元素的个数 };

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

数据结构实验报告-顺序表的创建、遍历及有序合并操作二、实验内容与步骤 实现顺序表的创建、遍历及有序合并操作,基本数据结构定义如下: 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");

宿舍管理系统源代码

#include<> #include<> #include<> typedef struct Student{ char name[20]; char sex[5]; int age; char institute[20]; char specialty[30]; }Student; typedef struct Room{ int roomnum; int roomarea; int totalnum; int stunum; Student stu[10]; Room *next; }Room; typedef struct Story{ char storynum; Room *room; }Story; /*-------------------------------------------------------------------------------------------------*/ Student *StudentCreat(int age,char name[],char institute[],char specialty[],char sex[]) { Student *Stu; Stu=(Student *)malloc(sizeof(Student)); Stu->age=age; strcpy(Stu->institute,institute); strcpy(Stu->name,name); strcpy(Stu->specialty,specialty); strcpy(Stu->sex,sex); return Stu; } Room *RoomCreat(int room_num,int room_area,int total_num,int stu_num) { Room *R; int i; R=(Room *)malloc(sizeof(Room));

学生管理系统程序源代码

学生管理系统程序源代码-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

#include #include struct student { long int num; char name[20]; int age; char sex[4]; int e; char m[20]; char b[30]; char p[15]; }; int n=0; struct student stu[100]; struct student *p; void lr(); void ll(); void cx(); void xg(); void sc(); void bc(); void dq(); void px(); void main() { int z; printf("+---------------------------+\n"); printf("| 欢迎使用学生档案管理系统 |\n"); printf("+---------------------------+\n"); printf("提示:为保证您的操作得到保存,请按正常顺序退出系统^_^\n"); do { printf("\n\t\t\t--------------------------------\n"); printf("\t\t\t+ 主菜单 |\n"); printf("\t\t\t--------------------------------\n"); printf("\t\t\t+ [1]----录入学生信息 |\n"); printf("\t\t\t+ [2]----浏览学生信息 |\n"); printf("\t\t\t+ [3]----查询学生信息 |\n"); printf("\t\t\t+ [4]----删除学生信息 |\n"); printf("\t\t\t+ [5]----修改学生信息 |\n");

顺序表的基本操作(C语言实现)

#define OVERFLOW 0 #define List_size 100 #define Listincrement 10 #include #include typedef float ElemType; typedef struct { ElemType *elem; int length; int listsize; }Sqlist; void main() { Sqlist L; Sqlist creat_Sq(Sqlist*L); void print_Sq(Sqlist*L); void ascend(Sqlist*L,int i); void Insert(Sqlist*L,float e); int i; float e;

creat_Sq(&L); printf("\n"); print_Sq(&L); printf("\n"); ascend(&L,i); print_Sq(&L); printf("\n"); Insert(&L,e); print_Sq(&L); printf("\n"); } Sqlist creat_Sq(Sqlist*L)//创建顺序表 { ElemType *newbase; int i,n; L->elem=(ElemType*)malloc(List_size*sizeof(ElemType)); if(!L->elem) exit(OVERFLOW);//存储分配失败

printf("请输入元数个数:\n"); scanf("%d",&n); if(n>=List_size)//如果所需空间大于线性表的初始空间,则增加空间容量 { newbase=(ElemType*)malloc((List_size+Listincrement)*sizeof(E lemType)); L->elem=newbase; L->length=n; L->listsize=List_size+Listincrement; for(i=0;ilength;i++) { printf("请输入第%d个数据:",i+1); scanf("%f",&(L->elem[i])); } if(!newbase) exit(OVERFLOW); } else {L->length=n; L->listsize=List_size; for(i=0;ilength;i++)

相关文档
相关文档 最新文档