题目11:按照下列要求建立单链表,编写程序实现(1)按照尾插入法建立不带头结点的单链表,并输出此单链表。(2)按照尾插入法建立一个带头结点的单链表,并输出此单链表。题目12:假设L为带头结点的单链表,表中元素值递增有序,编写程序删除表中值相同的多余元素。题目13:编写程序,实现循环队列上的下列操作,(1)判断队列是否为空;(2)取对头元素;(3)队尾插入元素;(4)队头删除元素
#include"stdio.h"#include"malloc.h"#define MaxSize 10typedef char ElemType ;typedef struct{ElemType data[MaxSize]; int front,rear;}SqQueue;void InitQueue(SqQueue *&q) //初始化队列{ q=(SqQueue *)malloc(sizeof(SqQueue)); q->front=q->rear=0;}void ClearQueue(SqQueue *&q) //销毁队列{ free(q); }int QueueEmpty(SqQueue *q) //判断队列是否为空{ return(q->front==q->rear); }int enQueue(SqQueue *&q,ElemType e) //入队列{ if((q->rear+1)%MaxSize==q->front) return 0; q->rear=(q->rear+1)%MaxSize; q->data[q->rear]=e; return 1;}int deQueue(SqQueue *&q,ElemType &e) //出队列{ if(q->front==q->rear) return 0; q->front=(q->front+1)%MaxSize; e=q->data[q->front]; return 1;}void numQueue(SqQueue *q) //输出队列元素个数{ if(q->rear>=q->front) printf("这个队列的元素个数为:%d\n",q->rear-q->front); else printf("这个队列的元素个数为:%d\n",MaxSize-q->front+q->rear);}void DispQueue(SqQueue *q) //输出队列{ int i=0,f=q->front+1; while((f+MaxSize)%MaxSize!=q->rear) { printf("%c\t",q->data[f]); f++; i++; if(i%5==0)printf("\n"); } printf("%c\n",q->data[f]);}void main(){ SqQueue *q; ElemType e; InitQueue(q); if(QueueEmpty(q))printf("这个队列是空的!\n"); else printf("这个队列不是空的!\n"); enQueue(q,'a'); enQueue(q,'b'); enQueue(q,'c'); if(deQueue(q,e)==1) printf("出对元素为:%c\n此时",e); numQueue(q); enQueue(q,'d'); enQueue(q,'e'); enQueue(q,'f'); printf("def进队列后,"); numQueue(q); printf("它的元素有:\n"); DispQueue(q); ClearQueue(q); }这是我以前的作业,你自己组织下,应该可以解决你的问题