数据结构试验1 线性表的有关操作:
操作要求:
1.随机产生或键盘输入一组元素,建立一个带头结点的单向链表(无序)。
2.遍历单向链表。
3.把单向链表中元素逆置(不允许申请新的结点空间)。
4.在单向链表中删除所有的偶数元素结点。
5.编写在非递减有序链表中插入一个元素使链表元素仍有序的函数,并利用该函数建立一个非递减有序单向链表。
6.利用算法5建立两个非递减有序单向链表,然后合并成一个非递增链表。
7.利用算法5建立两个非递减有序单向链表,然后合并成一个非递减链表。
8.利用算法1建立的链表,实现将其分解成两个链表,其中一个全部为奇数,另一个全部为偶数(尽量利用已知的存储空间)。
10.在主函数中设计一个简单的菜单,分别调试上述算法。按照要求去逐个实现算法
具体代码实现如下:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <windows.h>
#include <time.h>
using namespace std;
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
} LNode,*LinkList;
void Menu()
{
cout<<"0.break."<<endl;
cout<<"1.Create The List:"<<endl;
cout<<"2.Display The List:"<<endl;
cout<<"3.NiZhi The List:"<<endl;
cout<<"4.Delete OuShu:"<<endl;
cout<<"5.Create The Sort DiZeng List:"<<endl;
cout<<"6.Hebing Two Lists into DiZeng List:"<<endl;
cout<<"7.Hebing Two Lists into DiJian List:"<<endl;
cout<<"8.Fenjie Odd & Fodd:"<<endl;
}
LinkList Creat()
{
LinkList head,p,q;
ElemType x;
head=new LNode; //head=(LinkList )malloc(sizeof(LNode));
p=head;
cin>>x;
while(x!=0)
{
q=new LNode;
q->data=x;
p->next=q;
p=p->next; //p=q;
cin>>x;
}
p->next=NULL;
return head;
}
LinkList CreateRandom()
{
//srand(time(0)); //随机数种子
//int a=rand()%150; //产生150以内的随机数
LinkList head,p,q;
ElemType x;
head=new LNode; //head=(LinkList )malloc(sizeof(LNode));
p=head;
srand(time(0));
x=rand()%10;
while(x!=0)