数据结构课程设计题目(高手请进,解决后满意有分送)
需要给你完成一份吗
用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 数据结构高手请进...
答: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. 请编写一个算法,把一个队列逆置,在算法中可以使用栈,可以调用栈和队列的基本操作,但不允许直接处理栈...
答:第一题: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...
答:这种题目,可以根据不同角度广义表的表现形式运用两种不同的方式解答:一是把一个广义表看作是表头和表尾两部分,分别对表头和表尾进行操作;二是把一个广义表看作是若干个子表,分别对每个子表进行操作。第五章 树与二叉树从对线性结构的研究过度到对树形结构的研究,是数据结构课程学习的一次跃变,此次跃变完成的好坏...
答:额...这个题不用那么麻烦 首先..可以标明每一个数在输出序列的位置..这样..输入序列便是乱序的 例如 将1 2 3 4 5 排为1 2 4 5 3 可看成把1 2 5 3 4 排成1 2 3 4 5 原问题即规约成利用一个栈进行排序的问题 令q1[i]表示经过处理的输入序列的第i个数字 考虑对于任意两个数q1[...
答:实验一 单链表有一个头节点h e a d,指向链表在内存的首地址。链表中的每一个节点的数据类型为结构体类型,节点有两个成员:整型成员(实际需要保存的数据)和指向下一个结构体类型节点的指针即下一个节点的地址(事实上,此单链表是用于存放整型数据的动态数组)。链表按此结构对各节点的访问需从...