一、实验目的
(1)掌握线性表的基本运算在两种存储结构(顺序结构和链式结构)上的实现;
(2)掌握线性表的各种操作(建立、插入、删除等)的实现算法;
二、实验仪器及环境:
PC计算机 windows 7操作系统 CodeBlocks10.05
三、实验内容及结果(按照具体实验题目,按照如下格式书写)
1.随机产生或键盘输入一组元素,建立一个带头结点的单向链表(无序)。
2.遍历单向链表。
3.把单向链表中元素逆置(不允许申请新的结点空间)。
4.在单向链表中删除所有的偶数元素结点。
5.编写在非递减有序链表中插入一个元素使链表元素仍有序的函数,并利用该函数建立一个非递减有序单向链表。
6.利用算法5建立两个非递减有序单向链表,然后合并成一个非递增链表。
7.利用算法5建立两个非递减有序单向链表,然后合并成一个非递减链表。
8.利用算法1建立的链表,实现将其分解成两个链表,其中一个全部为奇数,另一个全部为偶数(尽量利用已知的存储空间)。
10.在主函数中设计一个简单的菜单,分别调试上述算法。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#define MAXASIZE 100
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
} LNode,*LinkList;
using namespace std;
//1.随机产生或键盘输入一组元素,建立一个带头结点的单向链表(无序)。
LinkList creat()//创建一个带头节点的链表
{
printf("Please Input a List of Numbers: ");
LinkList p1,p2,head;
head=(LNode *)malloc(sizeof(LNode));
head->next=NULL;
p1=head;
ElemType x;
while(scanf("%d",&x)!=-1)
{
p2=(LNode *)malloc(sizeof(LNode));
p2->data=x;
p1->next=p2;
p1=p2;
}
p1->