当前位置:
文档之家› 数据结构单链表的插入和删除实验报告
数据结构单链表的插入和删除实验报告
}
Status LinkListInsert(LinkList &L,inti,ElemType e)//向链表中插入某个元素
{
LinkList p,s;
p = L;
intj = 0;
while(p && j < i-1)
{
p = p->next;
j++;
}
if(!p || j > i-1)
returnERROR;
{
q = L->next;
for(intk = 0; k < len-1; k++)
{
if(q->data > q->next->data)
{
temp = q->data;
q->data = q->next->data;
q->next->data = temp;
}
q = q->next;
}
}
returnOK;
一、实验目的
熟悉vb6.0操作,要求单链表的数据域是字符串,且不允许重复的串插入表中;删除操作是数据输入的字符串,先找到相应的接点,后删除。
二、实验步骤(或程序)
#defineTRUE 1
#defineFALSE 0
#defineOK 1
#defineERROR 0
#defineINFEASIBLE -1
//删除La中的第i个元素结点
printf("请输入要删除节点的位置:");
scanf("%d",&pos);
if(LinkListDelete(La,pos,e))
{
printf("删除第%d个元素%d成功!\n",pos,e);
Len_La--;
}
else
puts("删除失败!");
system("PAUSE");
free(q);
returnOK;
}
intLinkListLocate(LinkList &L,ElemType e)//在单链表L中查找值为e的结点,找到后返回其位置,否则返回
{
LinkList p;
intj = 1;
p = L->next;
while(p && p->data != e)
{
p = p->next;
typedefstห้องสมุดไป่ตู้uctLNode
{
ElemType data;
structLNode *next;
}LNode,*LinkList;
Status InitLinkList(LinkList& L)//初始化链表
{
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
pos = LinkListLocate(La,e);
if(pos)
printf("值为%d的节点的位置是:%d\n",e,pos);
else
puts("查找的节点不存在!");
system("PAUSE");
putchar('\n');
}
三.实验结果
附件二:
实验报告打印格式说明
1.标题:三号加粗黑体
自学考试计算机系列课程
实践性环节实验报告本
课程名称数据结构
实验学期2010至2011学年第2学期
年级大三专业通信工程
学生姓名陈榕学号************
指导教师涂风华
实验最终成绩
重庆大学计算机学院制
实验名称
单链表的插入和删除
实验时间
2011年5月13号
实验地点
主楼第二软件实验室
课堂成绩
报告成绩
最终成绩
//确定La的长度
printf("La的长度为: ");
scanf("%d",&Len_La);
//初始化La
if(InitLinkList(La))
printf("初始化La成功!\n");
system("PAUSE");
putchar('\n');
//向La中随机添加元素并且非递减排序
if(FillLinkList(La,Len_La) && Ascend(La,Len_La))
p->data = rand()%100;
p->next = L->next;
L->next = p;
}
returnOK;
}
Status Ascend(LinkList& L,intlen)//非递减排序
{
LinkList q;
ElemType temp;
for(intj = 0; j < len-1; j++)
putchar('\n');
//在La中第i个元素之前插入一个新结点
printf("请输入要插入新节点的位置:");
scanf("%d",&pos);
printf("请输入要插入新节点的值:");
scanf("%d",&e);
if(LinkListInsert(La,pos,e))
{
printf("插入新节点成功!\n");
j++;
}
if(p && p->data == e)
returnj;
else
return0;
}
voidPrintLinkList(LinkList &L,intlen)//打印链表
{
LinkList p = L->next;
for(inti = 0;i < len; i++)
{
printf("%d\t",p->data);
s = (LinkList)malloc(sizeof(LNode));
s->data = e;
s->next = p->next;
p->next = s;
returnOK;
}
Status LinkListDelete(LinkList &L,inti,ElemType &e)//删除链表中的某个元素
printf("向La中随机添加元素并且非递减排序成功!\n");
else
puts("向La中添加元素失败!");
system("PAUSE");
putchar('\n');
//打印添加元素后的La
printf("添加元素后的La为:\n");
PrintLinkList(La,Len_La);
system("PAUSE");
putchar('\n');
//打印删除后的La
printf("删除节点后的La为:\n");
PrintLinkList(La,Len_La);
system("PAUSE");
putchar('\n');
//在La中查找某结点并返回其位置
printf("请输入要查找的节点的值:");
scanf("%d",&e);
returnOK;
}
Status FillLinkList(LinkList& L,intlen)//向链表中随机填充数据
{
srand(time(NULL));
LinkList p;
for(inti = len;i > 0; i--)
{
p = (LinkList)malloc(sizeof(LNode));
}
free(L);
returnOK;
}
voidmain()
{
LinkList La;
ElemType e;
intpos,Len_La;
/***************************************第题主程序************************************/
puts("***以下为第题程序***");
Len_La++;
}
else
puts("插入新节点失败!");
system("PAUSE");
putchar('\n');
//打印插入新节点后的La
printf("插入新节点后的La为:\n");
PrintLinkList(La,Len_La);
system("PAUSE");
putchar('\n');
#defineOVERFLOW -2
#defineLIST_INIT_SIZE 10
#defineLIST_INCREMENT 2
#defineStatusint
#include<stdio.h>
#include<stdlib.h>
#include<time.h>