
数据结构实验课程(单链表的基本操作)
#include
H->data=0;
printf(创建头结点成功!\\\ );
} return H; } void Inition_LinkList(LinkList L,int n) \\\/*采用前插发或后插法生成链表L, 参数n为初始化数据的个数*\\\/ { 学生填写 } void display(LinkList p) { 学生填写 } LinkList Locate_LinkList( LinkList H, int x) { \\\/*在单链表中查找值为x的结点,入口参数:单链表指针,检索元素*\\\/ \\\/*出口参数:找到后返回其指针,否则返回NULL*\\\/ LinkList p=H->next; while ( p && p->data != x) p=p->next; return (p); } LinkList Locate_LinkList2( LinkList H, int i) \\\/*在单链表中查找第i个结点*\\\/ { LinkList p; int j; p=H; j=0; while (p && jnext; j++; } \\\/*while*\\\/ if ( j != i || !p) { printf(参数 i 错或单链表不存在); return (NULL); } \\\/*第i个结点不存在*\\\/ return (p); } int Insert_LinkList( LinkList H, int i, int x) 2009-4-23 11:55 回复 BradBellick 1位粉丝 2楼{ \\\/*在单链表H的第i个位置前插入值为x的结点,入口参数:单链表,插入位置,插入元素*\\\/ \\\/*返回参数:成功标志,0不成功,1成功*\\\/ LinkList p, q; p= Locate_LinkList2( H, i-1); \\\/*找第i-1个结点地址*\\\/ if (!p) { printf(插入位置有误\\\ ); return (0); } q=(LinkList) malloc(sizeof(LNode)); if (!q) { printf(申请空间失败\\\ ); return (0); } \\\/*申请空间失败,不能插入*\\\/ q->data=x; q->next=p->next; \\\/*新结点插入在第i-1个结点的后面*\\\/ p->next=q; return 1; \\\/*插入成功,则返回*\\\/ } int Del_LinkList(LinkList H,int i) { \\\/*删除单链表H上的第i个结点,入口参数:单链表,删除元素序号,返回参数:成功标志, 0不成功,1成功*\\\/ LinkList p, q; int j; if (!H->next) { printf(空表不能删除\\\ ); return (0); } p= Locate_LinkList2( H, i-1); \\\/*找第i-1个结点地址,见算法2.10*\\\/ if (!p) { printf(参数元素的位置错误
\\\ ); return (0); \\\/*第i个结点不存在不能删除*\\\/ } q=p->next; \\\/*q指向第i个结点*\\\/ p->next=q->next; \\\/*从链表中删除*\\\/ free(q); \\\/*释放*s *\\\/ return (1); } void main() { (由学生填写) } 实验用测试数据和相关结果分析:(由学生填写) 实验总结:(由学生填写)
C语言实训心得
源程序:#include stdio.h \\\/*I\\\/O函数*\\\/#include stdlib.h \\\/*其它说明*\\\/#include string.h \\\/*字符串函数*\\\/#include conio.h \\\/*屏幕操作函数*\\\/#include mem.h \\\/*内存操作函数*\\\/#include ctype.h \\\/*字符操作函数*\\\/#include alloc.h \\\/*动态地址分配函数*\\\/#include dos.h#define N 4 \\\/*定义常数*\\\/typedef struct z1 \\\/*定义数据结构*\\\/{ char no[12]; char name[20]; int score[N]; float sum; float average; int order; struct z1 *next;}STUDENT;\\\/*以下是函数原型*\\\/STUDENT *init(); \\\/*初始化函数*\\\/STUDENT *create(); \\\/*创建链表*\\\/STUDENT *delete(STUDENT *h); \\\/*删除记录*\\\/void print(STUDENT *h); \\\/* 显示所有记录*\\\/void lookup(STUDENT *h); \\\/*查找*\\\/void save(STUDENT *h); \\\/*保存*\\\/STUDENT *load(); \\\/*读入记录*\\\/void computer(STUDENT *h); \\\/*计算总分和均分*\\\/STUDENT *Modify(STUDENT *h); \\\/*修改记录*\\\/void append(); \\\/*追加记录*\\\/STUDENT *sort(STUDENT *h); \\\/*按总分排序*\\\/STUDENT *index(STUDENT *h); \\\/*按学号排序*\\\/int menu_select(); \\\/*菜单函数*\\\/\\\/******主函数开始*******\\\/main(){ int i; STUDENT *head; \\\/*链表定义头指针*\\\/ printf(\\\ \\\ \\\ \\\ \\\ \\\ \\\ \\\ \\\ ); printf( * * ******* * ***** ***** * * ******* \\\ ); printf( * * * * * * * ** * * * \\\ ); printf( * * * * ******* * * * * * *** * ******* \\\ ); printf( * * * * * * * * * * * * * \\\ ); printf( * * ******* ******* ***** * *** * * * ******* \\\ ); printf(\\\ ); printf(\\\ ); printf(\\\ ); sleep(2); head=init(); \\\/*初始化链表*\\\/ clrscr(); \\\/*清屏*\\\/ for(;;) \\\/*无限循环*\\\/ { switch(menu_select()) \\\/*调用主菜单函数,返回值整数作开关语句的条件*\\\/ { \\\/*值不同,执行的函数不同,break 不能省略*\\\/ case 0:head=init();break; \\\/*执行初始化*\\\/ case 1:head=create();break; \\\/*创建链表*\\\/ case 2:print(head);break; \\\/*显示全部记录*\\\/ case 3:head=delete(head);break; \\\/*删除记录*\\\/ case 4:lookup(head);break; \\\/*按名字查找记录*\\\/ case 5:save(head);break; \\\/*保存文件*\\\/ case 6:head=load(); break; \\\/*读文件*\\\/ case 7:computer(head);break; \\\/*计算总分和均分*\\\/ case 8:head=Modify(head); break; \\\/*修改记录,一般会插在表尾*\\\/ case 9:head=sort(head);break; \\\/*按部分排序*\\\/ case 10:append();break; \\\/*追加记录*\\\/ case 11:head=index(head);break; \\\/*按学号排序*\\\/ case 12: exit(0); \\\/*如菜单返回值为14程序结束*\\\/ } }}\\\/*菜单函数,返回值为整数*\\\/menu_select(){ char *menu[]={***************MENU***************, \\\/*定义菜单字符串数组*\\\/ 00. init list, \\\/*初始化*\\\/ 01. Enter list, \\\/*输入记录*\\\/ 02. print list , \\\/*显示单链表中所有记录*\\\/ 03. Delete a record from list, \\\/*从表中删除记录*\\\/ 04. Search record on name, \\\/*按照姓名查找记录*\\\/ 05. Save the file, \\\/*将单链表中记录保存到文件中*\\\/ 06. Load the file, \\\/*从文件中读入记录*\\\/ 07. compute the score, \\\/*计算所有学生的总分和均分*\\\/ 08. Modify an information , \\\/*修改某学号的信息*\\\/ 09. sort to make new file, \\\/*排序*\\\/ 10. append record to file, \\\/*追加记录到文件中*\\\/ 11. index on nomber, \\\/*按学号排序*\\\/ 12. Quit}; \\\/*退出*\\\/ char s[3]; \\\/*以字符形式保存选择号*\\\/ int c,i; \\\/*定义整形变量*\\\/ gotoxy(1,1); \\\/*移动光标*\\\/ textcolor(YELLOW); \\\/*设置文本显示颜色为黄色*\\\/ textbackground(BLUE); \\\/*设置背景颜色为蓝色*\\\/ gotoxy(10,2); \\\/*移动光标*\\\/ putch(0xc9); \\\/*输出左上角边框┏*\\\/ for(i=1;i<44;i++) putch(0xcd); \\\/*输出上边框水平线*\\\/ putch(0xbb); \\\/*输出右上角边框 ┓*\\\/ for(i=3;i<20;i++) { gotoxy(10,i);putch(0xba); \\\/*输出左垂直线*\\\/ gotoxy(54,i);putch(0xba); } \\\/*输出右垂直线*\\\/ gotoxy(10,20);putch(0xc8); \\\/*输出左上角边框┗*\\\/ for(i=1;i<44;i++) putch(0xcd); \\\/*输出下边框水平线*\\\/ putch(0xbc); \\\/*输出右下角边框┛*\\\/ window(11,3,53,19); \\\/* 制作显示菜单的窗口,大小根据菜单条数设计*\\\/ clrscr(); \\\/*清屏*\\\/ for(i=0;i<16;i++) \\\/*输出主菜单数组*\\\/ { gotoxy(10,i+1); cprintf(%s,menu[i]); } textbackground(BLACK); \\\/*设置背景颜色为黑色*\\\/ window(1,1,80,25); \\\/*恢复原窗口大小*\\\/ gotoxy(10,21); \\\/*移动光标*\\\/ do{printf(\\\ make by wenwei);
printf(\\\ Enter you choice(0~13):); \\\/*在菜单窗口外显示提示信息*\\\/
scanf(%s,s); \\\/*输入选择项*\\\/
c=atoi(s); \\\/*将输入的字符串转化为整形数*\\\/
}while(c<0||c>14); \\\/*选择项不在0~14之间重输*\\\/ return c; \\\/*返回选择项,主程序根据该数调用相应的函数*\\\/}STUDENT *init(){ clrscr(); return NULL;}\\\/*创建链表*\\\/STUDENT *create(){ int i; int s; STUDENT *h=NULL,*info; \\\/* STUDENT指向结构体的指针*\\\/ clrscr(); for(;;) { info=(STUDENT *)malloc(sizeof(STUDENT)); \\\/*申请空间*\\\/ if(!info) \\\/*如果指针info为空*\\\/ { printf(\\\ out of memory); \\\/*输出内存溢出*\\\/ return NULL; \\\/*返回空指针*\\\/ } inputs(enter no:,info->no,11); \\\/*输入学号并校验*\\\/ if(info->no[0]=='@') { clrscr();break; } \\\/*如果学号首字符为@则结束输入,清屏后返回*\\\/ inputs(enter name:,info->name,15); \\\/*输入姓名,并进行校验*\\\/ printf(please input %d score \\\ ,N); \\\/*提示开始输入成绩*\\\/ s=0; \\\/*计算每个学生的总分,初值为0*\\\/ for(i=0;i
putchar(8); \\\/*退格键*\\\/
putchar(' '); \\\/*以空格代替*\\\/
putchar(8);
} else putchar(7); \\\/*没有任何字符的退格,响铃警告*\\\/ } else if(b!='\\\\r') { a[i++]=b; \\\/*只要不是退格和回车就接受*\\\/ putchar('*'); } else {a[i]=NULL; break; \\\/*密码输入完了,记得加个NULL到后面*\\\/
}} if(strcmp(a,pass)!=0){clrscr();
printf(Password is mistake Tow seconds to return!);
sleep(2);clrscr();return h;
} else {printf(Password is OK! Welcome to come!); sleep(3);
} clrscr(); \\\/*清屏*\\\/ printf(please deleted no\\\ ); \\\/*显示提示信息*\\\/ scanf(%s,s); \\\/*输入要删除记录的学号*\\\/ q=p=h; \\\/*给q和p赋初值头指针*\\\/ while(strcmp(p->no,s)&&p!=NULL) \\\/*当记录的学号不是要找的,或指针不为空时*\\\/ { q=p; \\\/*将p指针值赋给q作为p的前驱指针*\\\/ p=p->next; \\\/*将p指针指向下一条记录*\\\/ } if(p==NULL) \\\/*如果p为空,说明链表中没有该结点*\\\/ { printf(\\\ list no %s student\\\ ,s);sleep(2);clrscr();return h;} else \\\/*p不为空,显示找到的记录信息*\\\/ { printf(*********************************have found********************************\\\ ); printf(|no | name | sc1| sc2| sc3| sc4| sum | ave |order|\\\ ); printf(|------------|---------------|----|----|----|----|--------|--------|-----|\\\ ); printf(|%-12s|%-15s|%4d|%4d|%4d|%4d| %6.2f | %6-5.2f | %3d |\\\ , p->no, p->name,p->score[0],p->score[1],p->score[ q=p; \\\/*保存当前结点的指针,作为下一结点的前驱*\\\/ p=p->next; \\\/*指针后移,新读入数据链到当前表尾*\\\/ } q->next=NULL; \\\/*最后一个结点的后继指针为空*\\\/ fclose(fp); \\\/*关闭文件*\\\/ printf(---You have success read data from file!!!---\\\ ); getch(); \\\/*按任意键返回主菜单*\\\/ clrscr(); return h; \\\/*返回头指针*\\\/}\\\/*成绩统计*\\\/void computer(STUDENT *h){ STUDENT *p,*t,*q; \\\/*定义移动指针*\\\/ float saverage[N]={0}; \\\/*均分初值为0*\\\/ int i; clrscr(); for (i=0;i
~
~
多项式加法链表实现的实验报告怎么写
for(i=1;i<=5;i++) \\\/\\\/ <= 吧 { if(i == 1) \\\/\\\/你写成赋值了 x='A'; else if(i == 2) x='B'; else if(i == 3) x='C'; else if(i == 4) x='D'; else if (i == 5) x='E'; insert(l,x,i); \\\/\\\/ 滞空 然后依次插入 是不是应该写在循环里 }
数据结构 单链表 创建 打印 删除 插入 查询 实验报告
实验一C语言开发环境与程序设计步骤一、实验目的和要求:1.熟悉VC++6.0集成开发环境。
2.掌握在VC++集成开发环境下编辑、编译、连接和运行一个C语言程序的步骤。
3.通过运行简单的C语言程序,初步了解C语言源程序的结构和特点。
二、实验设备:PC机、VisualC++6.0三、实验内容:(一)实验准备循环结构:for(i=0;i<10;i++)for(1;2;3){{4}}运行顺序为1-2-4-3-2-4-3-2-4-3……(二)实验项目1、熟悉开发环境,参考文档《C++程序设计上机指导》;2、录下如下程序并改正相关错误,使之能够运行;#inculdeIntmain)intx,y;\\\/\\\/Aprintf(x,y=);scanf(“x,y”,&x,&y);print(输入的x=%dy=%d\\\ ,x,y);z=x;x=y;y=z;printf(“输出的%dy=%d\\\ ,&x,y);}程序的功能是输入两个数,两数交换后输出。
统计一下你改了多少个地方的错误,程序才能运行。
程序的错误分别为:1、include拼错;2、stdio少d;3、int的i大写;4、main少个括号;5、主程序前{缺少;6、int后面的,;不是英文格式的;7、scanf中有空格;8、xy应为%d;9、printf少f;10、printf中的,都用的是中文的;11、printf后面的;都是中文的;12、最后的printf第一个”不对;13、x前不用&;14、最后少return0;修改后的程序#includeintmain(){intx,y,z;



