数据结构课程设计题目(高手请进,解决后满意有分送)

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-06-29
数据结构课程设计题目 1、运动会分数统计

需要给你完成一份吗

用B+树来解决吧

#include "stdio.h"

typedef int ElemType;

/* 链队列结点结构 */

typedef struct node

{

    ElemType data;

    struct node *next;

} LNode;

/* 链队列结构 */

typedef struct Queue

{

    LNode *front;

    LNode *rear;

} Queue;

Queue *InitQueue()

{

    Queue *temp;

    temp = (Queue *)malloc(sizeof(Queue));

    temp->front = (LNode *)malloc(sizeof(LNode));

    temp->rear = temp->front;

    return temp;

}

/* 判断链队列是否为空 */

int IsEmpty(Queue *Q)

{

    return (Q->front==Q->rear ? 1 : 0);

    

}

/* 将值为data的结点加入到链队列中 */

void EnQueue(Queue *Q, ElemType data)

{

    LNode *temp = (LNode *)malloc(sizeof(LNode));

    temp->data = data;

    temp->next = NULL;

    Q->rear->next = temp;

    Q->rear = temp;

}

/* 从链队列中移出元素,保存在data中 */

void DeQueue(Queue *Q, ElemType *data)

{    

    LNode *temp;

    if(IsEmpty(Q))

    {

        printf("Error! Queue is empty.");

        return;

    }

    temp = Q->front->next;

    *data = temp->data;

    Q->front->next = temp->next;

    if(temp == Q->rear)

    {

        Q->rear = Q->front;

    }

    free(temp);

}

/* 创建size个结点的链队列 */

void CreateQueue(Queue *Q, int size)

{

    ElemType data;

    int i;

    for(i=0; i<size; i++)

    {

        printf("Element %d : ", i+1);

        scanf("%d", &data);

        EnQueue(Q, data);

    }

}

/* 取链队列的队首元素 */

ElemType GetFirstNode(Queue *Q)

{

    return (IsEmpty(Q) ? NULL : Q->front->next->data);

}

/* 取链队列的队尾元素 */

ElemType GetLastNode(Queue *Q)

{

    return (IsEmpty(Q) ? NULL : Q->rear->data);

}

/* 清空链队列 */

void Clear(Queue *Q)

{

    LNode *temp, *p;

    if(IsEmpty(Q))

    {

        return;

    }

    for(temp=Q->front->next; temp!=NULL;)

    {

        p = temp;

        temp = temp->next;

        free(p);

    }

    Q->rear = Q->front;

}

/* 输出链队列全部结点的值 */

void PrintNode(Queue *Q)

{

    LNode *curr;

    if(IsEmpty(Q))

    {

        printf("Queue is empty!
");

        return;

    }

    for(curr=Q->front->next; curr!=NULL; curr=curr->next)

    {

        printf("%d  ", curr->data);

    }

    printf("
");

}

void main()

{

    Queue *Q = InitQueue();

    int size;

    ElemType data;

    int choice;

    while(1)

    {

        system("cls");

        printf("***********************************************
");

        printf("          Link Queue Operation Demo

");

        printf("          1.   Create queue
");

        printf("          2.   Queue is empty?
");

        printf("          3.   In queue
");

        printf("          4.   Out queue
");

        printf("          5.   Get first element
");

        printf("          6.   Get last element
");

        printf("          7.   List nodes of queue
");

        printf("          8.   Clear queue
");

        printf("          0.   Exit

");

        printf("***********************************************
");

        printf("          Your choice : ");

        scanf("%d", &choice);

        switch(choice)

        {

            case 0:

            {

                return;

            }

            case 1:

            {

                printf("Input size of queue : ");

                scanf("%d", &size);

                CreateQueue(Q, size);

                break;

            }

            case 2:

            {

                if(IsEmpty(Q))

                {

                    printf("Queue is empty!
");

                }

                else

                {

                    printf("Queue is not empty!
");

                }

                break;

            }

            case 3:

            {

                printf("Input the value of queue node : ");

                scanf("%d", &data);

                EnQueue(Q, data);

                break;

            }

            case 4:

            {

                DeQueue(Q, &data);

                printf("Value of queue node Deleted : %d
", data);

                break;

            }

            case 5:

            {

                printf("First element : %d
", GetFirstNode(Q));

                break;

            }

            case 6:

            {

                printf("Last element : %d
", GetLastNode(Q));

                break;

            }

            case 7:

            {

                printf("All queue nodes : 
");

                PrintNode(Q);

                break;

            }

            case 8:

            {

                Clear(Q);

                printf("Clear nodes successfully from queue!
");

                break;

            }

            default:

            {                

                break;

            }

        }

        system("pause");

    }

}

运行界面:



//自己平时写的,你自己再改一改,基本上可以满足你的一些要求,
//学编程要勤于练习,这要才能提高,数据结构预算法很重要,自己努力吧
//记着给一个好评
#include"stdio.h"
#include"stdlib.h"
#include"util.h"
#define OK 1;
#define ERROR 0
#define OVERFLOW -2
typedef int QElemType;
typedef int Status;
typedef struct QNode{
QElemType data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct
{
QueuePtr front;//对头指针
QueuePtr rear;//队尾指针
}LinkQueue;
void input();
Status InitQueue(LinkQueue &Q)
{
Q.front=(QueuePtr)malloc(sizeof(QNode));
if(!Q.front)
exit(OVERFLOW);
Q.front->next=NULL;
Q.rear=Q.front;
return OK;
}
Status DestroyQueue(LinkQueue & Q)
{
while(Q.front)
{
Q.rear=Q.front->next;
free(Q.front);
Q.front=Q.rear;
}
return OK;
}

Status EnQueue(LinkQueue & Q,QElemType e)
{
QueuePtr p=(QueuePtr)malloc(sizeof(QNode));
if(!p)
exit(OVERFLOW);
p->data=e;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
return OK;
}
Status DeQueue(LinkQueue &Q,QElemType &e)
{
QueuePtr p;
if(Q.front==Q.rear)
return (ERROR);
p=Q.front->next;
e=p->data;
Q.front->next=Q.front->next->next;
if(Q.rear==p)
Q.rear=Q.front;
free(p);
return OK;
}

void menu()
{
int num;
LinkQueue Q;
printf("\n*************************************************\n");
printf("*************************************************\n");
for(int i=0;i<2;i++)
{
printf("** **\n");
}
printf("** 输入 1 ,进行入队列 输入 2 ,进行出队列 **\n");
printf("** ");
printf("请选择: ");
scanf(" %d",&num);
printf(" **");
for(i=0;i<2;i++)
{
printf("** **\n");
}
printf("*************************************************\n");
printf("*************************************************\n");
switch(num)
{
case 1: input();break;
case 2: DeQueue(Q,num);break;
default:break;
}
}

void input()
{
int e;
LinkQueue Q;
printf("请输入插入对头的元素:");
scanf("%d",e);
EnQueue(Q,e);
}

void main()
{
int i,j,e;
LinkQueue Q;
InitQueue(Q);
printf("输入入队列元素个数:");
scanf("%d",&j);
for(i=0;i<j;i++)
{
printf("输入第%d个入队列元素:",i+1);
scanf("%d",&e);
EnQueue(Q,e);
}
QueuePtr p;
p=Q.front;
while(p->next)
{
printf("%2d",p->next->data);
p=p->next;
}
printf("\n删除对头元素:");
DeQueue(Q,e);
printf("%d\n",e);
p=Q.front;
while(p->next)
{
printf("%2d",p->next->data);
p=p->next;
}
while(Q.front!=Q.rear)
{
menu();
}
printf("此时队列已经为空,无法操作\n");
}

  • 数据结构习题请高手帮忙?
    答:插入排序:起始(64),(56,23,89,10,75)第一趟 (56,64),(23,89,10,75)第二趟 (23,56,64),(89,10,75)第三趟 (23,56,64,89),(10,75)第四趟 (10,23,56,64,89),(75)第五趟 (10,23,56,64,75,89)2. 冒泡排序 起始(50,38,77,26,45,69)第一...
  • ...菜鸟请教“两道简单的数据结构实验题”,高手请进,在线等,急求证...
    答:5 设周期性任务P1,P2,P3的周期为T1,T2,T3分别为100,150,400;执行时间分别为20,40,100。请设计一种调度算法进行任务调度,满足任务执行周期及任务周期。6 优先级反转问题在嵌入式系统中是一中严重的问题,必须给与足够重视。a) 首先请解释优先级反转问题 b) 很多RTOS提供优先级继承策略(Priority ...
  • 一些数据结构方面的问题,请高手解答
    答:1:void Insert_Linklist(Lnode *H,Lnode *P,ELEMTP X){ q=H;while(q->next!=P) q=__q->next___;S=(Lnode *)malloc(sizeof(LNode));_S_=x;S->next=p;__q->next__=S;} 2 int InQueue(sqQueue *sq, ELEMTP x){ if ((sq->rear+1)%maxsize == sq->front) re...
  • 数据结构 实验题~ (高手请进)
    答:2008-06-13 数据结构题高手请进 2011-05-19 数据结构课程设计题目(高手请进,解决后满意有分送) 13 2009-10-09 C语言的数据结构问题,高手请进! 2 2010-06-06 数据结构作业 高手请进!!! 2014-11-22 数据结构实验题 2 2005-09-15 【高手请进】跪求数据结构难题2 2011-10-13 数据结构高手请进...
  • 急求数据结构C语言设计(高手进)
    答:printf("请输入第%d/%d名学生的信息:\n ",i+1,n);printf("请输入姓名: ");scanf("%s",name);printf("\n请输入学号: ");scanf("%d",&id);for(j=0;j<m;++j){ printf("\n录入第 %d/%d 门课程成绩:",j+1,m);scanf("%f",&score[j]);} printf("\n");//---赋值过程-...
  • 数据结构 队列
    答:第二章 1. 对线性表(18,8,21,7,3),画出相应的带表头结点的双向循环链表。2. 编写一个算法,在带表头结点的有序单链表中,插入值为 的结点,并使新的链表仍然有序。第三章 1. 请编写一个算法,把一个队列逆置,在算法中可以使用栈,可以调用栈和队列的基本操作,但不允许直接处理栈...
  • 请C语言版数据结构高手帮帮忙!
    答:第一题:include<iostream.h> struct list { int num;struct list *next;}head={0,0};void push(struct list *head,int num){ struct list *p=head;while(p->next&&p->next->num<num){ p=p->next;};struct list *p1=new list;p1->num=num;p1->next=p->next;p->next=p1;} vo...
  • 关于数据结构的问题,用C语言描述
    答:这种题目,可以根据不同角度广义表的表现形式运用两种不同的方式解答:一是把一个广义表看作是表头和表尾两部分,分别对表头和表尾进行操作;二是把一个广义表看作是若干个子表,分别对每个子表进行操作。第五章 树与二叉树从对线性结构的研究过度到对树形结构的研究,是数据结构课程学习的一次跃变,此次跃变完成的好坏...
  • 简单是数据结构题 急,,,
    答:额...这个题不用那么麻烦 首先..可以标明每一个数在输出序列的位置..这样..输入序列便是乱序的 例如 将1 2 3 4 5 排为1 2 4 5 3 可看成把1 2 5 3 4 排成1 2 3 4 5 原问题即规约成利用一个栈进行排序的问题 令q1[i]表示经过处理的输入序列的第i个数字 考虑对于任意两个数q1[...
  • 跪求数据结构(c语言版)的几个问题解答
    答:实验一 单链表有一个头节点h e a d,指向链表在内存的首地址。链表中的每一个节点的数据类型为结构体类型,节点有两个成员:整型成员(实际需要保存的数据)和指向下一个结构体类型节点的指针即下一个节点的地址(事实上,此单链表是用于存放整型数据的动态数组)。链表按此结构对各节点的访问需从...