数据结构实验
为了掌握数据结构这门课, 我重修了这门课的实验, 以求打好基本功.
实验一: 链式存储结构
线性表的链表实验
随机生成 10 个 100-999 之间的三位整数放入链表. 我用的是循环链表, 跟单链表差别不大, 只是最后一个元素最后指向的是头结点.
- void Create(LinkNode *&L) // 给定一个头结点, 输出链表
- { // 逆序头插法
- L = new LinkNode;
- L->data = 0;
- L->next = L; // 头结点开始时指向自己
- LinkNode* s;
- int x = 100;
- int y = 999;
- srand((unsigned)3);
- for(int i=0; i <10; i++)
- {
- s = new LinkNode;
- s->data = (rand() %( y-x+1 ))+ x ;// 这一句, 只需要简单修改 x,y 的值就能直接修改上下限
- s->next = L->next;
- L->next = s;
- }
- }
[10.27] 完成单链表的创建, 升序插入元素
- #include"LinkList.h"
- using namespace std;
- void Insert(LinkNode *L,int num)
- {
- LinkNode* p = L->next,*pre=L,*Tem; //p 指向第一个结点用来比较, pre 指向 p 前面的点. Tem 是新结点
- Tem = new LinkNode;
- Tem->data = num; // 要把值给 Tem 结点, 不然出问题
- if(L->next == NULL) // 当 L 没有结点时, 插入
- {
- Tem->next = NULL;
- L->next = Tem;
- return;
- }
- while (p && (p->data < num)) // 寻找合适的位置插入
- {
- pre = p;
- p = p->next;
- }
- if(p == NULL) // 没有找到合适位置, 一直来到了链表最后
- {
- pre->next = Tem;
- Tem->next = NULL;
- }
- else // 找到了合适位置
- {
- Tem->next = p;
- pre->next = Tem;
- }
- }
- void Display(LinkNode *L)
- {
- LinkNode *o;
- o = L->next;
- while(o != NULL)
- {
- cout<<o->data<<" ";
- o = o->next;
- }
- }
- void Create(LinkNode *L)
- {
- L = new LinkNode;
- L->data = 0;
- L->next = NULL; // 初始化 L
- int num=0;
- cout<<"请输入要插入的元素, 输入 - 1 结束"<<endl;
- cin>>num;
- while(num != -1)
- {
- Insert(L,num);
- L->data = L->data +1;
- cin>>num;
- }
- cout<<"输入完成, 列表元素如下:"<<endl;
- Display(L);
- }
- #include"stdio.h"
- #include<iostream>
- #include<stdlib.h>
- struct LinkNode
- {
- LinkNode *next;
- int data;
- };
- void Insert(LinkNode *L, int num);
- void Display(LinkNode *L);
- void Create(LinkNode *L);
- View Code
- #include"LinkList.h"
- using namespace std;
- int main()
- {
- LinkNode *L = NULL;
- Create(L);
- return 0;
- }
来源: https://www.cnblogs.com/wymannpan/p/11615518.html