文章目录
1.实验目的2.实验内容3.实验步骤4.实验代码5.实验总结
1.实验目的
(1)掌握线性表的链式存储结构; (2)掌握单链表及其基本操作的实现。
2.实验内容
(1)编程实现单链表的以下基本操作:建立单链表,查找单链表,插入单链表,删除单链表。 (2)采用单链表结构编程实现:两个有序单链表的归并运算。
3.实验步骤
编写程序框架,利用while循环输入操作代码,利用switch选择语句对输入的代码进行判断,并进行相应操作。编写各个操作的具体函数: 1>建立单链表:初始化单链表并输入元素; 2>查找元素:顺链域向后扫描,直到p为空或p指向第i个元素; 3>定位元素:顺链域向后扫描,直到p为空或p所指结点数据域等于e; 4>插入单链表:新结点的指针域指向插入位置,将插入位置前驱的指针域指向新结点; 5>删除单链表:改变删除结点前驱的指针域,释放被删除结点; 6>显示单链表:while循环输出元素,直到p为空; 7>两个有序单链表归并:创建两个有序单链表LA,LB,一次比较两个表中的元素,将较小的值插入到LC中。执行代码,测试数据。
4.实验代码
#include
using namespace std;
typedef int ElemType;
typedef struct LNode
{
ElemType data; //结点的数据域
struct LNode *next; //结点的指针域
}LNode,*LinkList;
//创建单链表(尾插法)
void CreateList(LinkList &L);
//显示单链表
void ListDisplay(LinkList &L);
//查找元素
void GetElem(LinkList &L,int i,ElemType e);
//定位元素
LNode *LocateElem(LinkList &L,ElemType e);
//插入单链表
void ListInsert(LinkList &L,int i,ElemType e);
//删除单链表
void ListDelete(LinkList &L,int i);
//两个有序单链表归并
void MergeList(LinkList &LA,LinkList &LB,LinkList &LC);
int main()
{
LinkList L,LA,LB,LC;
ElemType e;
int n;
int index = 1;
while(index > 0)
{
cout
int n;
cout n;
L = new LNode;
L->next = NULL;
LinkList r = L;
for(int i=0;i
LinkList p = L->next;
while(p)
{
cout
p = p->next;
++j;
}
if(!p || j>i)
{
cout
LinkList p = L;
int j = 0;
while(p && j
cout next = s;
cout
p = p->next;
++j;
}
if(!p->next || j>i-1)
{
cout
if(pa->data data)
{
pc->next = pa;
pc = pa;
pa = pa->next;
}
else
{
pc->next = pb;
pc = pb;
pb = pb->next;
}
}
pc->next = pa?pa:pb;
delete LB;
cout |