文章目录

  • 一.线性表的基本操作
  • 二.链表的基本操作
  • 三.顺序栈的基本操作
  • 四.链队列的基本操作

日常作业存档_(:з」∠)_

一.线性表的基本操作

(1) 实验目的
通过该实验,深入理解顺序表的逻辑结构、物理结构等概念,掌握顺序表基本操作的编程实现,注意顺序表插入、删除等操作过程中数据元素的移动现象,培养学生编写程序时,要考虑程序的强壮性,熟练掌握通过函数参数返回函数结果的办法。
(2) 实验内容
编程实现顺序表下教材第二章定义的线性表的基本操作,最好用菜单形式对应各个操作,使其编程一个完整的小软件。
(3) 参考界面

(3)验收/测试用例
通过菜单调用各个操作,测试点:

  • 没有初始化前进行其他操作,程序是否能控制住
  • 初始化一个顺序表;
  • 插入数据(位置, 数据),要测插入位置不合法的情况(0,1)、(2,1)(即是否在可插入的范围内),正确插入4个数据(1,2)、(1,1)、(3,3);
  • 显示顺序表中的数据,屏幕输出1, 2, 3;
  • 判空,屏幕输出顺便表非空;
  • 顺便表长度,屏幕输出3;
  • 获取指定位置元素,要测指定位置在【1,3】范围之外的情况和之内的情况;
  • 定位,输入:4, 输出:不存在,输入2,输出位置为2;
  • 求直接前驱,要测求第一个元素的前驱、不存在顺序表中的元素的直接前驱,其他元素的直接前驱;
  • 求直接后继,要测最后一个元素的后继、不存在顺序表中的元素的直接后继,其他元素的直接后继;
  • 删除,要测位置在【1,3】范围之外的情况和之内的情况;
  • 清空操作后再测长度;
  • 销毁顺序表

实现代码

#include <stdio.h>
#include <stdlib.h>
#define LIST_INIT_SIZE 100 //初始分配量
#define LISTINCREMENT 10 //线性表存储空间分配量
typedef int ElemType;
typedef struct
{ElemType *elem;int length;int listsize;
}SqList;
void InitList_Sq(SqList &L)//初始化
{L.elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));if(!L.elem) {printf("分配空间失败!\n");exit(1);}L.length = 0;L.listsize = LIST_INIT_SIZE;printf("创建成功!\n");}    void DestoryList(SqList &L)//销毁
{if(L.elem){delete L.elem;printf("销毁成功\n");}elseprintf("销毁失败\n");
}void ClearList(SqList &L)//清空
{if(L.length){L.length = 0;printf("清空成功!\n");}elseprintf("无需清空。\n");
}void IfEmpty(SqList &L)//判断是否为空
{if(L.length){printf("线性表非空!\n"); }elseprintf("线性表为空。\n");
}void GetLength(SqList &L)//取线性表长度
{printf("线性表的长度为 %d \n",L.length); }void GetElem(SqList &L,int i,int &e)//取值 第i位的数 为 e
{if(i < 1||i > L.length){printf("取值失败!\n");}else{e = L.elem[i-1];printf("第%d个元素为:%d\n",i,e);   }
}void PriorElem(SqList &L,ElemType cur_e)//求某个元素对应的前驱
/*输入直接是元素位置,判断有无前驱 有则直接输出elem[i-1])*/
{int i = cur_e-1,pre;if(i == 0)printf("该元素没有前驱。\n");else if(i <= 0||i >= L.length)printf("该元素不存在。\n");else{pre = L.elem[i-1];printf("该元素的前驱为 %d\n",pre);}
}void NextElem(SqList &L,ElemType cur_e)//求某个元素对应的后继 原理同上
{int i = cur_e-1,next;if(i == L.length-1)printf("该元素没有后继。\n");else if(i < 0||i > L.length-1)printf("该元素不存在。\n");else{next = L.elem[i+1];printf("该元素的后继为 %d \n",next);}
}void ListInsert(SqList &L,int i,int e)//插入 i位置 数值e
{if(i < 1 ||i > L.length+1){printf("插入失败!\n");}else if(L.length == LIST_INIT_SIZE){printf("插入失败!\n");}else{for(int j = L.length - 1;j >= i - 1;j--){L.elem[j+1] = L.elem[j];}L.length++;L.elem[i-1] = e;printf("插入成功!\n");}} void ListDelete(SqList &L,int i)//删除指定位置元素
{if(i < 1||i > L.length){printf("删除失败!\n"); }int j;for(j = i;j < L.length;j++){L.elem[j-1] = L.elem[j];}--L.length;printf("删除成功!\n");
} void TraverseList(SqList L)//遍历输出(显示线性表)
{int i;for(i=1;i<=L.length;i++){printf("%d ",L.elem[i-1]);}printf("\n");
}
int main()
{int n,i,e,cur_e;SqList L;L.elem = 0;printf("1----初始化一个线性表\n");printf("2----销毁线性表\n"); printf("3----清空线性表\n"); printf("4----判断线性表是否为空\n"); printf("5----求线性表长度\n"); printf("6----获取线性表指定位置元素\n"); printf("7----求前驱\n"); printf("8----求后继\n"); printf("9----在线性表指定位置插入元素\n"); printf("10----删除线性表指定位置元素\n"); printf("11----显示线性表\n"); printf("\t退出,输入一个负数!\n"); printf("请输入操作代码:\n");  while(~scanf("%d",&n)){if(n < 0){break;}if(n == 1){InitList_Sq(L);}if(n == 2){if(L.elem == 0){printf("未进行初始化\n"); }else{DestoryList(L);L.elem = 0;}}if(n == 3){if(L.elem == 0){printf("未进行初始化\n"); }else{ClearList(L);}}if(n == 4){if(L.elem == 0){printf("未进行初始化\n"); }else{IfEmpty(L);}}if(n == 5){if(L.elem == 0){printf("未进行初始化\n"); }else{GetLength(L);}}if(n == 6){if(L.elem == 0){printf("未进行初始化\n"); }else{printf("请输入需要获取的元素的位置:\n");scanf("%d",&i);GetElem(L,i,e);}}if(n == 7){if(L.elem == 0){printf("未进行初始化\n"); }else{printf("请输入需要查找前驱的元素位置:\n");scanf("%d",&cur_e);PriorElem(L,cur_e);}}if(n == 8){if(L.elem == 0){printf("未进行初始化\n"); }else{printf("请输入需要查找后继的元素位置:\n");scanf("%d",&cur_e);NextElem(L,cur_e);}}if(n == 9){if(L.elem == 0){printf("未进行初始化\n"); }else{printf("请输入需要插入的元素的位置和值(输入格式:i,e):\n");scanf("%d,%d",&i,&e);ListInsert(L,i,e); }}if(n == 10){if(L.elem == 0){printf("未进行初始化\n"); }else{printf("请输入需要删除的元素的位置:\n");scanf("%d",&i);ListDelete(L,i);}}if(n == 11){if(L.elem == 0){printf("未进行初始化\n"); }else{TraverseList(L); }}}return 0;
} 

二.链表的基本操作

(1)实验目的
通过该实验,深入理解链表的逻辑结构、物理结构等概念,掌握链表基本操作的编程实现,熟练掌握C语言中指针的操作。和实验3对比,掌握线性结构两种不同存储方式的区别。
(2)实验内容
编程实现链表下教材第二章定义的线性表的基本操作,最好用菜单形式对应各个操作,使其编程一个完整的小软件。
(3)参考界面

(4)验收/测试用例
同实验一

实现代码

#include <stdio.h>
#include <stdlib.h>
void init()
{printf("可执行操作有:\n");for(int i = 0;i < 55;i++)printf("*");printf("\n");for(int i = 0;i < 15;i++)printf("*");printf("\t1.初始化或重置链表\t");for(int i = 0;i < 15;i++)printf("*");printf("\n");for(int i = 0;i < 15;i++)printf("*");printf("\t2.销毁链表\t\t");for(int i = 0;i < 15;i++)printf("*");printf("\n");for(int i = 0;i < 15;i++)printf("*");printf("\t3.链表中数据元素个数\t");for(int i = 0;i < 15;i++)printf("*");printf("\n");for(int i = 0;i < 15;i++)printf("*");printf("\t4.所指位序的元素值\t");for(int i = 0;i < 15;i++)printf("*");printf("\n");for(int i = 0;i < 15;i++)printf("*");printf("\t5.链表已存在元素的位序\t");for(int i = 0;i < 15;i++)printf("*");printf("\n");for(int i = 0;i < 15;i++)printf("*");printf("\t6.请输入元素,求直接前驱");for(int i = 0;i < 15;i++)printf("*");printf("\n");for(int i = 0;i < 15;i++)printf("*");printf("\t7.请输入元素,求直接后继");for(int i = 0;i < 15;i++)printf("*");printf("\n");for(int i = 0;i < 15;i++)printf("*"); printf("\t8.在第i个位置插入元素\t");for(int i = 0;i < 15;i++)printf("*");printf("\n");for(int i = 0;i < 15;i++)printf("*");printf("\t9.删除第i个元素\t\t");for(int i = 0;i < 15;i++)printf("*");printf("\n");for(int i = 0;i < 15;i++)printf("*");printf("\t10.输出所输入的链表元素\t");for(int i = 0;i < 15;i++)printf("*");printf("\n");for(int i = 0;i < 15;i++)printf("*");printf("\t11.初始化并输入链表元素\t");for(int i = 0;i < 15;i++)printf("*");printf("\n");for(int i = 0;i < 15;i++)printf("*");printf("\t12.退出\t\t\t");for(int i = 0;i < 15;i++)printf("*");printf("\n");for(int i = 0;i < 55;i++)printf("*"); printf("\n");printf("请输入你的选择:\n");
}typedef struct LNode{int data;struct LNode *next;
}LNode,*LinkList;void InitList(LinkList &L)//链表初始化
{if(!(L == 0)){LinkList p,q;p = L->next;while(p){q = p-> next;free(p);p = q;}L->next = NULL;printf("链表已重置\n");}else{L = (LNode*)malloc(sizeof(LNode));L->next = NULL;printf("初始化成功!\n");}
}void DestoryList(LinkList *L)//链表销毁
{LinkList q,p = *L;//p指向L链表头结点 if(p == 0)printf("链表未初始化!\n");else{while(p != 0){q = p -> next;delete p;p = q;}*L = NULL;//头结点指针清空 L = 0;printf("链表销毁成功!\n");}}void CountNode(LinkList &L)//计算节点个数
{if(L == 0)printf("链表未初始化!\n");else{int n = 0;LNode *p;p = L->next;while(p){p = p->next;++n;}if(n)printf("节点有 %d 个\n",n);elseprintf("链表为空!\n");}
}
void CreatList(LinkList &L,int n)//初始化并创建单链表 向链表里插入n个数
{if(!(L == 0)){printf("链表已初始化,无需重复操作!\n"); }else{L = (LNode*)malloc(sizeof(LNode));L->next = NULL;printf("初始化成功!\n");}LNode *p,*tail;tail = L;//尾插法 printf("请输入元素:"); for(int i = 0;i < n;i++){p = (LinkList)malloc(sizeof(LNode));scanf("%d",&(p->data));p->next = tail->next;tail->next= p;tail = p;}
}
void GetElem(LinkList L,int i,int &e)//所指位序的元素值
{LNode *p;p = L->next;int j = 1;while(p && j < i){p = p->next;++j;}if(!p || j > i)printf("获取失败!\n");else{e = p->data;printf("获取的值为:%d\n",e); }
}void GetPosition(LinkList L,int i)//所指元素值的位序(第一次出现的地方)
{LNode *p;p = L->next;int j = 0,flag = 0;while(p){while(p->data != i){p = p->next;if(p == NULL){flag = 1;break;}j++;}break;}if(flag == 0)printf("所指元素值的位序为:%d\n",j);elseprintf("未找到该元素值。\n");
}void ElemPrimer(LinkList L,int e)//求前驱
{LinkList p = L->next,q = p->next;while(q){if(e == q -> data){if(p)printf("所求前驱为:%d\n",p->data);elseprintf("该节点无前驱\n");return;}else{p = q;}q = p->next;}
}
void ElemNext(LinkList L,int e)//求后继
{int i = 0;LinkList p = L->next,q = NULL;while(p){if(e == p->data){q = p->next;if(p)printf("所求后继的值为:%d\n",q->data);elseprintf("该节点无后继\n");return;}elsep = p->next;i++;}
}void ElemInsert(LinkList L,int i,int &e)//插入数值
{LinkList p,s;p = L->next;int j = 1;while(p && j < i){p = p->next;j++;}if(!p || j > i){printf("插入失败!\n");}s = (LinkList)malloc(sizeof(LNode));s->data = e;s->next = p->next;p->next = s;printf("插入完成!\n");
}void LinkListDelete(LinkList &L,int i)//删除指定位置数值
{int j = 0,e;LNode *p,*q;p = L;while((p->next)&&(j < i-1)){p = p->next;j++;}if(!(p->next) || (j > i-1))printf("删除位置错误!\n");else{q = p->next;p -> next = q -> next;e = q -> data;free(q);printf("删除成功!\n");}    }
void TraveList(LinkList L)//遍历输出
{LNode *p;p = L->next;while(p!=NULL){printf("%d ",p->data);p = p->next;}printf("\n");
}
int main()
{int n,t,e;LinkList L;L = 0;init();while(~scanf("%d",&n)){if(n == 1){InitList(L);  }if(n == 2){DestoryList(&L);}if(n == 3){CountNode(L);} if(n == 4){if(L == 0)printf("链表未初始化!\n");else{printf("请输入需要获取元素的位置:");scanf("%d",&t);GetElem(L,t,e);}}if(n == 5){if(L == 0)printf("链表未初始化!\n");else{printf("请输入需要查找的元素的值:");scanf("%d",&t);GetPosition(L,t);}}if(n == 6){int e;if(L == 0)printf("链表未初始化!\n");else{printf("请输入需要求前驱的元素值:");scanf("%d",&e);ElemPrimer(L,e);}}if(n == 7){int e;if(L == 0)printf("链表未初始化!\n");else{printf("请输入需要求后继的元素值:");scanf("%d",&e);ElemNext(L,e);}}if(n == 8){int i,e;if(L == 0)printf("链表未初始化!\n");else{printf("请输入需要插入的位置和数字(一行,用空格隔开):");scanf("%d %d",&i,&e);ElemInsert(L,i,e);}  }if(n == 9){int i;if(L == 0)printf("链表未初始化!\n");else{printf("请输入需要删除元素的位序:");scanf("%d",&i);LinkListDelete(L,i);}}if(n == 10){if(L == 0)printf("链表未初始化!\n");else{TraveList(L);}}if(n == 11){printf("请输入需要输入元素的个数:");scanf("%d",&t);CreatList(L,t);printf("输入完成!\n");}if(n == 12){printf("程序结束!\n");break;}}return 0;
}

三.顺序栈的基本操作

(1)实验目的
通过该实验,让学生掌握栈的相关基本概念,认识栈是插入和删除集中在一端进行的线性结构,掌握栈的“先入后出”操作特点。栈在进行各类操作时,栈底指针固定不动,掌握栈空、栈满的判断条件。
(2)实验内容
用顺序存储结构,实现教材定义的栈的基本操作,提供数制转换功能,将输入的十进制整数转换成二进制。
(3)参考界面

(4)验收/测试用例
通过菜单调用各个操作,测试点:

  • 没有初始化前进行其他操作,程序是否能控制住;
  • 初始化一个栈;
  • 判栈空,屏幕显示栈为空;
  • 3个数入栈, 1、2、3;
  • 栈长度,屏幕输出3;
  • 取栈顶元素,再判栈空,然后再判栈长度。让学生知道取栈顶元素不改变栈中的内容,栈顶指针不发生改变;
  • 出栈,再判栈长度;
  • 销毁栈,再做其他操作,判断程序是否能控制

代码实现

#include <stdio.h>
#include <stdlib.h>
void i1();
void init();
const int Stacksize = 100,addsize = 10;
typedef struct{int *top;int *base;int stacksize;int length;
}SqStack;
int InitStack(SqStack &S)//1初始化
{S.base = (int *)malloc(Stacksize * sizeof(int));if(!S.base){printf("栈初始化失败!\n");return 0;}S.top = S.base;S.stacksize = Stacksize;S.length = 0;printf("栈初始化成功!\n");
}
int DestoryStack(SqStack &S)//2销毁
{if(S.base){free(S.base);S.base = NULL;S.top = NULL;S.stacksize = 0;printf("销毁成功!\n");return 1;}
}
int ClearStack(SqStack &S)//3置空
{if(S.base){S.top = S.base;printf("栈置空成功!\n");}elseprintf("栈已经为空\n");}
int Empty(SqStack &S)//4 判空
{if(S.top == S.base)return 1;elsereturn 0;
}
int Length(SqStack S)//5长度
{if(S.top == S.base){printf("栈为空!\n");}elseprintf("栈的长度为:%d\n",S.length);
}
int GetTop(SqStack &S)//6取栈顶元素
{if(S.top == S.base){return 0;}else{return *(S.top - 1);}
}
int Push(SqStack &S,int e)//7元素压入栈
{if(S.top - S.base >= S.stacksize){S.base = (int*)realloc(S.base,(S.stacksize + addsize)*sizeof(int));if(!S.base){printf("分配空间失败!\n");return 0;}S.top = S.stacksize + S.base;S.stacksize += addsize;}*S.top++ = e;S.length++;printf("插入成功!\n");
}
int DeleteStack(SqStack &S)//8删除栈顶元素并返回值
{if(S.base == S.top){printf("栈为空!\n");return 0;}printf("删除的栈顶元素为:%d\n",*(S.top-1));free(S.top-1);S.top--;S.stacksize--;printf("删除成功!\n");
}
int Pop(SqStack S)//9弹出栈内元素
{if(S.base == S.top){printf("栈为空!\n");return 0;}int *p = S.base;printf("栈内元素值为:\n");while(p != S.top){printf("%d ",*p);p++;}
}
void Initscanf(SqStack &S,int e)//10创建并输出
{int k;if(S.base)printf("栈已进行了初始化!\n");elseInitStack(S);printf("请输入%d个入栈元素:",e);for(int i = 0;i < e;i++){scanf("%d",&k);Push(S,k);}printf("\n");
}
int main()
{int n,e;SqStack S;S.base = 0; init();while(scanf("%d",&n)!=EOF){if(!S.base && n != 1 && n != 10 && n != 11){printf("栈未进行初始化!\n");continue;} if(S.base && n == 1){printf("栈已进行了初始化!\n");continue;}if(n == 1){InitStack(S);}if(n == 2){DestoryStack(S);}if(n == 3){ClearStack(S);}if(n == 4){if(Empty(S))printf("栈为空!\n");elseprintf("栈为非空!\n");}if(n == 5){Length(S);}if(n == 6){if(!GetTop(S))printf("栈为空!\n");elseprintf("栈顶元素为:%d\n",GetTop(S));}if(n == 7){printf("请输入需要压入栈的元素值:");scanf("%d",&e);Push(S,e); }if(n == 8){DeleteStack(S); }if(n == 9){Pop(S);printf("\n");}if(n == 10){printf("请输入需要入栈的元素个数:");scanf("%d",&e);Initscanf(S,e);}if(n == 11){printf("程序结束!");break;}}}
void i1()
{for(int i = 0;i < 20;i++)printf("*");
}
void init()
{for(int i = 0;i < 76;i++)printf("*");printf("\n");i1();printf(" 1.初始化为空栈\t\t\t");i1();printf("\n");i1();printf(" 2.销毁栈\t\t\t\t");i1();printf("\n");i1();printf(" 3.将栈置空\t\t\t\t");i1();printf("\n");i1();printf(" 4.判断栈是否为空栈\t\t\t");i1();printf("\n");i1();printf(" 5.返回栈的长度\t\t\t");i1();printf("\n");i1();printf(" 6.求栈顶元素\t\t\t");i1();printf("\n");i1();printf(" 7.插入元素,并使其成为栈顶元素\t");i1();printf("\n");i1();printf(" 8.删除栈顶元素,并返回其值\t\t");i1();printf("\n");i1();printf(" 9.输出栈内元素\t\t\t");i1();printf("\n");i1();printf(" 10.创建并输出入栈元素\t\t");i1();printf("\n");i1();printf(" 11.退出\t\t\t\t");i1();printf("\n");for(int i = 0;i < 76;i++)printf("*");printf("\n");printf("请输入选择:");
}

四.链队列的基本操作

(1)实验目的
通过该实验,使学生理解链队列的构造特点并灵活应用,掌握链队基本操作的编程实现,认识栈是在一端进行插入,在另一端进行删除集中操作的线性结构,掌握队列的“先入先出”操作特点,知道判断队列空和满的条件,进一步熟悉C语言中指针操作。
(2)实验内容
用链式存储结构,实现教材定义的队列的基本操作。
(3)参考界面
(4)验收/测试用例
通过菜单调用各个操作,测试点:

  • 没有初始化前进行其他操作,程序是否能控制住;
  • 初始化一个队列;
  • 判队列空,屏幕显示队列为空;
  • 4个数入队, 1、2、3、5;
  • 栈长度,屏幕输出4;
  • 取队头元素,再判栈空,然后再判栈长度。让学生知道取队头元素不改变队列中的内容,队头指针不发生改变;
  • 出队,再判栈长度;
  • 销毁队,再做其他操作,判断程序是否能控制

代码实现

#include <stdio.h>
#include <stdlib.h>
void init();
typedef struct QNode{int data;QNode *next;
}QNode,*QPtr;
typedef struct{QPtr front;QPtr rear;int length;
}LinkQ;
int e;
int InitQueue(LinkQ &Q)//1初始化
{if(Q.front){printf("已进行过初始化!\n");}else{Q.front = Q.rear = new QNode;Q.front -> next = NULL;Q.length = 0;printf("初始化成功!\n");}
}
int DestoryQ(LinkQ &Q)//2队列销毁
{if(!Q.front){printf("队列未进行初始化!\n");}else{while(Q.front){Q.rear = Q.front->next;delete(Q.front);Q.front = Q.rear;}Q.front = 0;printf("队列销毁成功!\n");}
}
int ClearQ(LinkQ &Q)//3置空
{if(!Q.front){printf("队列未进行初始化!\n");}else{if(Q.front == Q.rear) printf("队列已经为空!\n");else{Q.front = Q.rear;Q.length = 0; printf("队列置空成功!\n");}}}
int EmptyQ(LinkQ &Q)//4判空
{if(!Q.front){printf("队列未进行初始化!\n");}else{if(Q.front == Q.rear){printf("队列为空!\n");}elseprintf("队列为非空!\n");}
}
int LengthQ(LinkQ &Q)//5元素个数
{if(!Q.front){printf("队列未进行初始化!\n");}else{printf("队列内元素的个数是:%d\n",Q.length);}
}
int GetTop(LinkQ Q)//6队头元素
{QNode *p;if(!Q.front){printf("队列未进行初始化!\n");}else{if(Q.front == Q.rear){printf("队列为空!\n");}else{p = Q.front->next;printf("队头元素为:%d\n",p->data);}}
}
int EnQ(LinkQ &Q)//7插入队头元素
{if(!Q.front){printf("队列未进行初始化!\n");}else{printf("请输入需要插入的元素值:");scanf("%d",&e);QNode *p = new QNode;p->data = e;p->next = NULL;Q.rear->next = p;Q.rear = p;Q.length++;printf("插入成功!\n");}
}
int DeleteQ(LinkQ &Q)//8删除队头元素
{QNode *p;if(!Q.front){printf("队列未进行初始化!\n");}else{if(Q.front == Q.rear){printf("队列为空!\n");}else{p = Q.front->next;Q.front->next = p->next;//如果是最后一个 则为NULL if(Q.rear == p)Q.rear = Q.front;free(p);printf("删除成功!\n");}}
}
int InitCreateQ(LinkQ &Q)//9初始化并创建
{int k;InitQueue(Q);printf("请输入入队元素的个数:");scanf("%d",&e);printf("请输入%d个入队元素\n"); for(int i = 0;i <e;i++){scanf("%d",&k);QNode *p = new QNode;p->data = k;p->next = NULL;Q.rear->next = p;Q.rear = p;Q.length++;printf("插入成功!\n");}
}
int PrintQ(LinkQ Q)//10输出队列元素
{QNode *p;if(!Q.front){printf("队列未进行初始化!\n");}else{if(Q.front == Q.rear){printf("队列为空!\n");}else{p = Q.front->next;while(p != NULL){printf("%d ",p->data);p = p->next;}printf("\n");}}
}int main()
{int n;init();LinkQ Q;Q.front = 0;while(~scanf("%d",&n)){if(n == 1){InitQueue(Q);}if(n == 2){DestoryQ(Q);}if(n == 3){ClearQ(Q);}if(n == 4){EmptyQ(Q);}if(n == 5){LengthQ(Q);}if(n == 6){GetTop(Q);}if(n == 7){EnQ(Q);}if(n == 8){DeleteQ(Q); }if(n == 9){InitCreateQ(Q); }if(n == 10){PrintQ(Q);}if(n == 11){break;}}return 0;
}
void i1()
{for(int i = 0;i < 20;i++)printf("*");
}
void init()
{for(int i = 0;i < 76;i++)printf("*");printf("\n");i1();printf(" 1.初始化队列\t\t\t");i1();printf("\n");i1();printf(" 2.销毁队列\t\t\t\t");i1();printf("\n");i1();printf(" 3.清空队列\t\t\t\t");i1();printf("\n");i1();printf(" 4.判断队列是否为空\t\t\t");i1();printf("\n");i1();printf(" 5.返回队列中元素个数\t\t");i1();printf("\n");i1();printf(" 6.返回队列队头元素\t\t\t");i1();printf("\n");i1();printf(" 7.插入新的队尾元素\t\t\t");i1();printf("\n");i1();printf(" 8.删除队头元素\t\t\t");i1();printf("\n");i1();printf(" 9.初始化并创建队列\t\t\t");i1();printf("\n");i1();printf(" 10.输出队列元素\t\t\t");i1();printf("\n");i1();printf(" 11.退出\t\t\t\t");i1();printf("\n");for(int i = 0;i < 76;i++)printf("*");printf("\n");printf("请输入选择:");
}

数据结构实验整理(一)相关推荐

  1. 数据结构实验---最短路径C实现附带及简单界面

    数据结构实验-最短路径C实现附带及简单界面 前言: 最短路径算法是图论中比较重要的算法之一,我们在课本中学到的最短路径算法有两种,分别为Dijkstra 算法 和 Floyd 算法,本文中采用的是 D ...

  2. 数据结构 实验三 栈的基本运算

    栈的基本运算 任务一: 顺序栈的基本操作 任务描述: 本关任务:实现顺序栈的基本操作,包括栈的初始化.置空栈.进栈.出栈.判栈空.栈的输出(遍历)等. 相关知识: 为了完成本关任务,你需要掌握: - ...

  3. 数据结构实验之链表五:单链表的拆分-sdut

    数据结构实验之链表五:单链表的拆分 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 输入N个 ...

  4. SDUT OJ 数据结构实验之排序一:一趟快排

    数据结构实验之排序一:一趟快排 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...

  5. SDUT-2449_数据结构实验之栈与队列十:走迷宫

    数据结构实验之栈与队列十:走迷宫 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 一个由n * m 个格子组成的迷宫,起 ...

  6. sdut 2137 数据结构实验之求二叉树后序遍历和层次遍历

    数据结构实验之求二叉树后序遍历和层次遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descr ...

  7. sdut 3341数据结构实验之二叉树二:遍历二叉树

    数据结构实验之二叉树二:遍历二叉树 Time Limit: 1000MS Memory Limit: 65536K Problem Description 已知二叉树的一个按先序遍历输入的字符序列,如 ...

  8. sdut 2088 数据结构实验之栈与队列十一:refresh的停车场

    数据结构实验之栈与队列十一:refresh的停车场 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem ...

  9. sdut 2135 数据结构实验之队列一:排队买饭

    数据结构实验之队列一:排队买饭 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descriptio ...

最新文章

  1. Android Studio下加入百度地图的使用 (一)——环境搭建
  2. python3.7正则表达式语法_python3正则表达式的几个高级用法
  3. 肝!一个非常好用的 Python 魔法库
  4. 安装SCOM Reporting Server
  5. sql 查出一张表中重复的所有记录数据
  6. 深入理解 Spring Boot Starters 原理(手写Spring boot Start)
  7. Activiti - 新一代的开源BPM引擎
  8. NET 4.0 System.Threading.Tasks学习笔记
  9. linux用于电脑,适用于 Linux的Windows子系统正在获得这些有用的新功能的介绍
  10. 笨鸟先飞之ASP.NET MVC系列之过滤器(04认证过滤器)
  11. 一个朋友的精彩BLOG
  12. Java通过坐标点进行拟合函数
  13. YoungTalk-STM32入门100步-总篇
  14. 百词斩不复习_百词斩怎么复习,学好英语的前提条件是?
  15. javascript中的交互效果
  16. 【算法】动态规划之计算二项式系数(C++源码)
  17. 如何培养忠诚客户以及培养忠诚客户的重要性
  18. 宏观经济调控政策笔记+
  19. 随手记:银河麒麟创建自动挂载
  20. gaussdb 【FAQ_002】【gs_guc配置pg_hba.conf后不生效】

热门文章

  1. vue项目中 一行文本 文字 根据关键字 改变颜色 改变展示颜色
  2. 【微信开发第一章】SpringBoot实现微信公众号创建菜单,同步菜单功能
  3. 用神经网络实现语音分类
  4. 一款简单而强大的截图软件 Snipaste
  5. “心脏滴血”漏洞复现
  6. iOS——directory not found for option 链接错误
  7. winpe修复改linux工具,利用WinPE修改原系统注册表来修复系统
  8. 【P48】锂电池充电和电源自动切换
  9. 【小知识】TVS瞬态抑制二极管与齐纳二极管(稳压管)的差异点分析
  10. border-image