链表-模拟栈和队列

来源:互联网 发布:qt creator是什么软件 编辑:程序博客网 时间:2024/05/22 13:43

#include <stdio.h>

#include <stdlib.h>

#include "string.h"


/***欢迎入群:157996131(攻程师)*主攻*C*Object-C*Swift*IOS***/


typedef struct node{

   int data;

   structnode* prev;

   structnode* next;

}node_t,*pnode_t;


int main(){

   pnode_t pflag  =NULL;

   pnode_t pnew =NULL;

   pnode_t firstp =NULL;

   pnode_t lastp =NULL;

   int count =0;

    printf("录入数据的顺序为:\n");

   for (; count<10; count++) {

        pnew = (pnode_t)malloc(sizeof(node_t));

       if(count==0){

        //使用firstp记录第一个排队的节点的地址,

            firstp = pnew;

            pflag = pnew;

            pnew->data = count+1;

        }

       else{

       //使用上一个节点(firstp)的prev指针记录当前节点的地址

            firstp->prev = pnew;

            pnew->data = count+1;

            firstp = pnew;

        }

       //使用lastp记录当前节点的地址,实际到最后记录的是

       //最后一个节点的地址,next记录下一个节点的地址

        pnew->next = lastp;

        lastp = pnew;

       printf("%d ",count+1);

    }

    printf("\n队列:先进先出:\n");

   for (count =0; count<10; count++) {

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

        pflag = pflag->prev;

    }

    printf("\n栈:先进后出:\n");

   for (count =0; count<10; count++) {

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

        lastp = lastp->next;

    }

   printf("\n");

   return0;

   /*

     输出结果:

     

     录入数据的顺序为:

     1 2 3 4 5 6 7 8 9 10

     队列:先进先出:

     1 2 3 4 5 6 7 8 9 10

     栈:先进后出:

     10 9 8 7 6 5 4 3 2 1

     Program ended with exit code: 0

     */

}

0 0
原创粉丝点击