计算机软件基础实验,《计算机软件基础》实验.doc

本资料由浙江自考网收集整理,更多自考资料请登录 HYPERLINK "/" /下载

PAGE

PAGE 9

光阴易逝,岂容我待。

《计算机软件基础》实验

实验一 线性表的插入与删除

【实验目的】

掌握线性表的基本运算.

掌握顺序存储的概念, 学会对顺序存储数据结构进行操作.

加深对顺序存储数据结构的理解, 逐步培养解决实际问题的编程能力.

掌握线性表的在链接存储下的插入和删除运算.

【实验内容】

初始化线性表

建立线性表

在线性表中插入指定值的元素

在线性表中删除指定值的元素

在线性表中删除指定位置的元素

在线性表中查找指定元素

输出线性表

【参考程序】

1. 建立学生档案链表

#define LEN sizeof(struct student) /* sizeof() 求字节数运算符 */

struct student

{ long num;

float score;

struct student *next;

};

int n; /* 结点的个数 */

struct student *creat ( )

{ struct student *head; /* 结构体类型 */

struct student *p1,*p2; /*p1 指向新结点, p2 指向最后一个结点*/

n=0;

p1=p2=(struct student *)malloc(LEN); /* 分配一个结点的空间 */

scanf (“%ld,%f”, &p1->num, &p1->score); /* 输入第一个结点的值 */

head=NULL; /* 空链表 */

while(p1->num!=0) /* 若学号=0,则建表结束 */

{ n=n+1; /*结点数*/

if (n==1)

head=p1; /* 第一个结点 */

else

p2->next=p1; /* 链入下一个结点 */

p2=p1;

p1=(struct student *) malloc(LEN); /* 分配一个新结点的空间 */

scanf (“%ld,%f”,&p1->num,&p1->score); /* 输入这个结点的值 */

}

p2->next=NULL;

return(head); /* 返回链表的起始地址 */

}

2. 输出链表

void print( struct student *head ) /* 输入链表的首地址 */

{ struct student *p;

printf("\n现在,存在 %d 个记录是: \n",n);

p=head; /* p 指向第一个结点 */

if (head != NULL) /* 不是空链 */

do

{ printf ("%ld %5.1lf\n",p->num,p->score); /* 输出结点的内容 */

p=p->next; /* p 指向下一个结点 */

} while (p!=NULL); /* p 为空指针时,循环结束 */

}

在单链表中插入指定值的结点

struct student

{ long num;

float score;

struct student *next;

};

struct student *insert ( struct student *head,struct student *stud )

{ struct student *p0,*p1,*p2;

p1=head; /* p1 指向表头 */

p0=stud; /* p0 指向要插入的结点 */

if ( head==NULL ) /* 如果是空表,则接到表头 */

{ head=p0;

p0->next=NULL;

}

else

{ while((p0->num > p1->num) && (p1->next!=NULL ) )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值