信息与通信工程学院。
高级程序设计》实验报告。
学号: s314080098
专业: 信息与通信工程
学生姓名: 李长玺。
任课教师: 杨志钢。
2024年3月。
实验一。一、任务描述。
1)设计一个带头结点的单链表,并随机生成一组序列,存入该单链表中。
2)针对上一步生成的单链表,编写算法,将其中的数据元素按照值递增的顺序进行就地排序(即不再申请新结点空间的情况下完成排序)。
二、任务分析。
单链表在c语言中是一种非常常见的结构,本程序实现了单链表的创建,插入和排序,同时由于在创建对象时有多种不同的形式,所以该函数还增加了对构造函数的重载,本程序用vs2010编写,完成单链表的生成,任意位置的插入、删除,并对其数据进行排序。
三、数据结构设计。
结点定义:typedef struct node
datatype data;
struct node *next;
slnode;
初始化: listinitiate(head)
void listinitiate(slnode **head)
head = slnode *)malloc(sizeof(slnode));
(*head)->next = null
求当前数据元素个数 listlength(head)
int listlength(slnode *head)
slnode *p = head;
int size = 0
while(p->next !=null
p = p->next;
size ++
return size;
插入listinsert(head, i, x)
int listinsert(slnode *head, int i, datatype x)
slnode *p, *q;
int j;
p = head;
j = 1;
while(p->next !=null &&j < i - 1)
p = p->next;
j++;if(j !=i - 1)
printf(“插入位置参数错!”)
return 0;
q = slnode *)malloc(sizeof(slnode));
q->data = x;
q->next = p->next;
p->next = q;
return 1;
删除listdelete(head, i, x)
int listdelete(slnode *head, int i, datatype *x)
slnode *p, *s;
int j;
p = head;
j = 1;
while(p->next !=null &&p->next->next!= null &&j < i - 1)
p = p->next;
j++;if(j !=i - 1)
printf(“删除位置参数错!”)
return 0;
s = p->next;
x = s->data;
p->next = p->next->next;
free(s);
return 1;
四、程序设计。
/ work_ :定义控制台应用程序的入口点。
auther : lichangxi
function : sort
time : 2015.04.02
#include ""
#include <>
#include <>
#include <>
#include
using namespace std;
typedef int datatype;
typedef struct node
datatype data;
struct node *next;
slnode;
void listinitiate(slnode **head)
*head = slnode *)malloc(sizeof(slnode));
(*head)->next = null
int listlength(slnode *head)
slnode *p = head;
int size = 0
while(p->next !=null
p = p->next;
size ++
return size;
int listinsert(slnode *head, int i, datatype x)
slnode *p, *q;
int j;
p = head;
j = 1;
while(p->next !=null &&j < i - 1)
if(j !=i - 1)
q = slnode *)malloc(sizeof(slnode));
q->data = x;
q->next = p->next;
p->next = q;
return 1;
int listdelete(slnode *head, int i, datatype *x)
slnode *p, *s;
int j;
p = head;
j = 1;
while(p->next !=null &&p->next->next!= null &&j < i - 1)
p = p->next; j++;
if(j !=i - 1)
s = p->next;
*x = s->data;
p->next = p->next->next;
free(s);
return 1;
int listget(slnode *head, int i, datatype *x)
slnode *p;
int j;
p = head;
j = 1;
while(p->next !=null &&j < i)
p = p->next; j++;
if(j !=i)
printf("取元素位置参数错!")
return 0;
*x = p->data;
return 1;
void destroy(slnode **head)
slnode *p, *p1;
p = head;
while(p !=null)
p1 = p;
p = p->next;
free(p1);
*head = null;
void linlistinsert(slnode *head, datatype x)
slnode *curr, *pre, *q;
curr = head->next;
pre = head;
while(curr !=null &&curr->data <=x)
q = slnode *)malloc(sizeof(slnode));
q->data = x;
q->next = pre->next;
pre->next = q;
void linlistsort(slnode *head)
slnode *curr, *pre, *q, *porg;
porg = head->next;
head->next = null;
while(porg !=null)
q = porg;//slnode *)malloc(sizeof(slnode));
porg = porg->next;
q->next = pre->next;
pre->next = q;
int _tmain(int argc, _tchar* ar**)
slnode *head;
int i , x;
listinitiate(&head);
for(i = 0; i < 10; i++)
for(i = 0; i < listlength(head); i++)
printf("");
listdelete(head, 4, &x);
for(i = 0; i < listlength(head); i++)
printf("");
linlistinsert(head, 11);
for(i = 0; i < listlength(head); i++)
printf("");
destroy(&head);
listinitiate(&head);
listinsert(head, 0, 45);
高级程序设计
高级程序设计 是为电子商务专业学生开设的专业基础课程。开设高级程序设计课程的目的是,进行程序设计和面向对象方法的基础训练 应用新技术开发各种适用于网络环境的应用程序。本课程前导课程为 无。本课程后续课程为 旅游管理软件开发技术 旅游移动客户端设计与应用 景区app设计与应用。本课程的功能是通过课堂教...
高级语言程序设计
总分 100.00,做题时间 90分钟 一 单项选择题 总题数 15,分数 30.00 语言早期规定建立文件缓冲区采用的形式是 分数 2.00 a.缓冲文件系统。b.非缓冲文件系统。c.分页文件系统。解析 2.以下是对二维数组的正确说明的是 分数 2.00 a 3,4 a 1 4 a 3 4 解析 ...
高级程序设计作业
常州大学。高级程序设计方法。期末大作业。2011年 12 月。第一次作业。一 内容要求 1 编写把图像 bmp格式 数据写入c程序文件的数组中的程序,即把图像转化为 件 2 建立win32应用程序,以转化的数组元素为值,利用绘像素点函数setpixel把图象显示出来。二 bmp知识介绍 bmp是一种...