高级程序设计

发布 2021-05-05 21:02:28 阅读 4600

信息与通信工程学院。

高级程序设计》实验报告。

学号: 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是一种...