数据结构实验二

在不知道长度的前提下查找链表的中间节点:

#include"iostream"
#include"stdio.h"
#include"algorithm"
#include"string.h"
#include"cmath"
#define maxsize 100
using namespace std;
typedef int datatype;
struct linklist //结点类型
{
       datatype data; //数据域
       linklist *next; //指针域
};

void Initlist(linklist *&first) //链表初始化
{
    first=new linklist;//动态分配空间,如果出现错误则输出 allocate error
    if(first==NULL){cout<<"allocate error!"<<endl;}
    else
    {
        first->next=NULL;
        first->data=0;//记录链表的长度,空着也是空着
    }
}

void Clearlist(linklist *&first) //清空链表
{
    linklist *temp;
    while(first->next!=NULL)
    {
        temp=first->next;
        first->next=temp->next;
        delete temp;//释放掉temp所占的空间
    }
}

void Inserttail2(linklist *&first,int number_a)//尾插法建表
{
        datatype x;
        linklist *tail,*temp=first;
        while(number_a--)
    {
        cin>>x;
        tail=new linklist;
        if(tail==NULL) {cout<<"allocata error!"<<endl;exit(1);}
        tail->data=x;
        temp->next=tail;
        temp=tail;
        tail->next=NULL;
    }

}

linklist *findmid(linklist *&first)
{
    linklist *temp1=first,*temp2=first->next;
    while(temp2!=NULL&&temp2->next!=NULL)//判断条件缺一不可
    {
        temp1=temp1->next;
        temp2=temp2->next->next;
    }
    if(temp1==first) return NULL;
    else return temp1;
}
int main()
{
    int case_count=0;
    while(1)
    {
        cout<<"案例"<<++case_count<<":"<<endl;
        linklist *la;
    int number_a;//记录A和B集合中的元素个数
    datatype a[maxsize];
    Initlist(la);
    cout<<"A集合中的元素个数:";cin>>number_a;
    if(number_a)cout<<"输入A集合中的元素:";
    Inserttail2(la,number_a);
    linklist *mid_node=findmid(la);
    if(mid_node==NULL) cout<<"此链表为空!"<<endl<<endl;
    else
    {
        if(number_a%2)
            cout<<"中间节点元素的数域是:"<<mid_node->next->data<<endl<<endl;
        else
            cout<<"中间节点元素的数域是:"<<mid_node->data<<"或 "<<mid_node->next->data<<endl<<endl;
    }
    }
    return 0;
}

时间: 2024-10-28 04:19:22

数据结构实验二的相关文章

二叉树的应用(南邮数据结构实验二)

借鉴了书本和学长的代码 1 #include<iostream> 2 using namespace std; 3 template<class T> 4 struct BTNode // 结点类 5 { 6 BTNode() 7 { 8 lchild=rchild=NULL; 9 10 } 11 BTNode(const T &x) 12 { 13 element=x; 14 lchild=rchild=NULL; 15 } 16 BTNode(const T &

数据结构实验二----递归求各结点的平均值

double GetAve(List p,int n) { if (!p->next) return p->data; else { double ave = GetAve(p->next, n - 1); return ((ave*(n - 1)) + p->next->data) / n ; } } 原文地址:https://www.cnblogs.com/h694879357/p/11708236.html

数据结构实验之图论二:基于邻接表的广度优先搜索遍历

数据结构实验之图论二:基于邻接表的广度优先搜索遍历 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索(BFS)遍历,输出从某个顶点出发的遍历序列.(同一个结点的同层邻接点,节点编号小的优先遍历) 输入 输入第一行为整数n(0< n <100),表示数据的组数. 对于每组数据,第一行是三个整数k,m,t(0<k<100,0<m<(k-1)*k/2,

SDUT 2142 【TEST】数据结构实验之图论二:基于邻接表的广度优先搜索遍历

数据结构实验之图论二:基于邻接表的广度优先搜索遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Description 给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索(BFS)遍历,输出从某个顶点出发的遍历序列.(同一个结点的同层邻接点,节点编号小的优先遍历) Input 输入第一行为整数n(0< n <100),表示数据的组数.对于每组数据,第一行是三个整数k,m,t(0<

SDUT 3341 数据结构实验之二叉树二:遍历二叉树

数据结构实验之二叉树二:遍历二叉树 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点).请建立二叉树并按中序和后序的方式遍历该二叉树. Input 连续输入多组数据,每组数据输入一个长度小于50个字符的字符串. Output 每组输入数据对应输出2行:第1行输出中序遍历序列:第2行输出后序遍历序列

SDUT 3399 数据结构实验之排序二:交换排序

数据结构实验之排序二:交换排序 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 冒泡排序和快速排序都是基于"交换"进行的排序方法,你的任务是对题目给定的N个(长整型范围内的)整数从小到大排序,输出用冒泡和快排对这N个数排序分别需要进行的数据交换次数. Input 连续多组输入数据,每组数据第一行给出正整数N(N ≤ 10^5),随后给出N个整数,数字间以空格分隔. Output

SDUT 3374 数据结构实验之查找二:平衡二叉树

数据结构实验之查找二:平衡二叉树 Time Limit: 400MS Memory Limit: 65536KB Submit Statistic Problem Description 根据给定的输入序列建立一棵平衡二叉树,求出建立的平衡二叉树的树根. Input 输入一组测试数据.数据的第1行给出一个正整数N(n <= 20),N表示输入序列的元素个数:第2行给出N个正整数,按数据给定顺序建立平衡二叉树. Output 输出平衡二叉树的树根. Example Input 5 88 70 61

数据结构实验之栈二:一般算术表达式转换成后缀式

数据结构实验之栈二:一般算术表达式转换成后缀式 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 对于一个基于二元运算符的算术表达式,转换为对应的后缀式,并输出之. 输入 输入一个算术表达式,以'#'字符作为结束标志. 输出 输出该表达式转换所得到的后缀式. 示例输入 a*b+(c-d/e)*f# 示例输出 ab*cde/-f*+ 提示 来源 示例程序 由一般是求后缀式: 1.设立暂时存放运算符的栈: 2.设表达式的结束符为"#

172303 2017-2018-2 《程序设计与数据结构》实验二报告

172303 2017-2018-2 <程序设计与数据结构>实验二报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 范雯琪 学号:20172303 实验教师:王志强 助教:张旭升/刘伟康 实验日期:2018年4月17日 必修/选修: 必修 1.实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 完成蓝墨云上 (1)-(5)实验. 2.实验过程及结果 过程: 本次实验老师一共设置了5