数据结构实验报告
实验一创建单链表和单链表操作
、姓名、学号、实验日期
掌握线性表的基本操作:插入、删除、查找、以及线性表合并等操作在顺序存储结构和链式存储结构上的实现。
测试数据为(3,9,5,6,11,8);在5之前插入4,7,并删除11
求集合{1,12,8,6,4,9}和{2,5,12,7,4}的并集
概要设计
为了条理清晰,分为2个程序分别实现插入删除功能和求并集功能
(1)创建链表:分配空间,根据链表长度输入值创建链表
修改插入位置结点的前后指针,将给定的值插入到指定的位置或者将指定位置的值删除
(2)创建两个链表,修改链表头尾指针,将两个链表合并
详细设计
实现插入删除功能
#include<>
#include<>
#include<>
#include<>
#define OK 1
#define OVERFLOW 0
typedef struct LNode
{
int data; // 数据域
struct LNode *next; // 指针域
}LNode,*LinkList; //结点结构类型和指向结点的指针类型
int TraverseList_L(LinkList L) //遍历单链表
{
LinkList p;
p=L->next;
while(p)
{
printf("-->%d",p->data);
p=p->next;
}
return OK;
}
void CreateList_L(LinkList &L,int &n)
{
L=(LinkList)malloc(sizeof (LNode));//建立一个空链表L。
if(!L)
{
exit(OVERFLOW);
}
else
L->next=NULL;
int i=0;
LinkList p,q;
printf("请输入要在该链表存放的值");
q=L;
for(i=0;i<n;i++)
{
p=(LinkList)malloc(sizeof (LNode));//生成新结点。
scanf("%d",&p->data);
p->next=q->next;
q->next=p;
q=p;
}
}
//在第i个元素插入一个元素。
LinkList ListInsert_L(LinkList &L,int i,int e)
{
LNode *p,*s;int j;
printf("输入要插入的结点位置:");
scanf("%d",&i);
p=L;j=0;
while(p&&j<i-1){p=p->next;++j;}
if(!p||j>i-1)
{printf("您插入的位置不合法,不合法");
return 0;}//判断i的值是否合法
s=(LinkList)malloc(sizeof(LNode));
if(!s) exit(OVERFLOW);
printf("输入要在该结点存放的数值:");
数据结构实验报告实验一 来自淘豆网m.daumloan.com转载请标明出处.