任务3
4
王晓龙
开始于 2020-10-18 11:04
0 13 451
已截止

任务尚未发布或者你没有权限查看任务内容。

任务讨论
/*
 * 子任务名:1.定长顺序栈的入栈出栈操作
 *  姓名:宫梦南
 *  班级:2015级5班
 *  学号:2015015391
 *  日期:2020.10.26  
*/

#include <stdio.h>
#include <malloc.h>

#define  TRUE  1
#define  FALSE 0


/*
 * 定义顺序栈结构体
*/
typedef struct stack{
 int datas [5];
 int top; // 栈顶指针
}*Stack;

/*
 * 初始化顺序栈
*/
Stack InitStack(){
 // 分配顺序栈内存空间
 Stack s = (Stack)malloc(sizeof(struct stack));
 s -> top = -1;
 return s;
}

/*
 * 入栈 压栈
 *  s 顺序栈
 *  data 入栈数据
*/
int Push(Stack s, int data){
 s -> datas[s -> top] = data;
 s -> top ++;
 return TRUE;
}

/*
 * 出栈 弹栈
 * s 顺序栈
*/
int Pop(Stack s){
 int data;
 s -> top--;
 data = s -> datas[s -> top];
 return data;
}

int main(int argc, char const *argv[])
{
 Stack s = InitStack();

 // 入栈元素
 int datas[] = {2, 4, 6, 8, 10};

 // for循环依次入栈
 printf("Push:");
 for(int i = 0; i < 6; i++){
  printf("%d\t", datas[i]);
  Push(s, datas[i]);
 }
    printf("入栈成功");
 // 出栈 弹栈
 printf("\nPop: ");
 for(int i = 0; i < 6; i++){
  printf("%d\t", Pop(s));
 }
    printf("出栈成功");
 return 0;
}

push:2 4 6 8 10 0入栈成功

pop:0 10 8 6 4 2出栈成功

/*
 * 子任务名:1.
 *  姓名:宫梦南
 *  班级:2015级5班
 *  学号:2015015391
 *  日期: 2020.10.26 
*/

#include <stdio.h>
#include <stdlib.h>
#define OK 1;
#define ERROR 0;

typedef int ElemType;
typedef int Status;
typedef struct Node
{
 ElemType data;
 struct Node *next;
}Node, *QueuePrt;
typedef struct
{
 //队头,尾指针
 QueuePrt front, rear;
}LinkQueue;
//初始化一个队列(创建一个队列)
Status InitQueue(LinkQueue *q) {
 q->front = q->rear = (QueuePrt)malloc(sizeof(Node));
 if (!q->front)
 {
  exit(0);
 }
 q->front->next = NULL;
 return OK;
}
//入队操作EnQ
Status EnQ(LinkQueue *q, ElemType e) {
 QueuePrt p = (QueuePrt)malloc(sizeof(Node));
 if (!p)
 {
  exit(0);
 }
 p->data = e;
 p->next = NULL;
 q->rear->next = p;
 q->rear = p;
 return OK;
}
//出队操作
Status DeQ(LinkQueue *q, ElemType *e) {
 QueuePrt p;
 if (q->front == q->rear)
 {
  return ERROR;
 }
 p = q->front->next;
 *e = p->data;
 q->front->next = p->next;
 if (q->rear == p)
 {
  q->rear = q->front;
 }
 free(p);
 return OK;
}

//遍历访问队列中的元素 
void Visit(Node*s) 
{
 Node*v=s->next;
 while(v)
 {
  printf("%d->",v->data);
  v=v->next;
 }
}

//主函数
int main() {
 LinkQueue q;
 int a[10];
 int i;
 InitQueue(&q);
 
 for (i = 0; i < 10; i++)
 {
  EnQ(&q, i + 1);
 }
 
 for (i = 0; i < 10; i++)
 {
  DeQ(&q, &a[i]);
  printf("%d\t", a[i]);
 }
 
 return 0;
}
1 2 3 4 5 6 7 8 9 10
王晓龙

任务已更新

王晓龙

任务已更新