C语言栈及队列问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 03:10:29
1,设有一非空单链表p,试设计算法按链表的相反顺序打印出链表中各节点的值。

2,用带头结点的单循环链表表示一个队列,队列元素为正整数,且只设一个指向队尾元素的指针,试设计一个队列管理的模拟系统。采用的管理模式如下:
1.队列初始化
2.当键盘输入一个正整数时,把它作为一个队列元素入队列
3.当键盘输入一个负整数时,则队头元素出列
4.当键盘输入0时,退出系统
5.每输入一个整数,输出经过队列操作后队列中的所有元素

1、按链表的相反顺序打印出链表中各节点的值
typedef struct _l
{
int data;
struct _l *next;
} link;

void func(link *p)
{
if(p!=NULL)
{
func(p->next);
printf("%d",p->data);
}
}

2、一个队列管理的模拟系统
typedef struct _l
{
int data;
struct _l *next;
} link;

link *tail=NULL;
//1.队列初始化
int init()
{
tail=(link *)malloc(sizeof(link));
if(tail!=NULL)
{
tail->next=tail;
return 1;
}
return 0;
}

//2.当键盘输入一个正整数时,把它作为一个队列元素入队列
int insert(int n)
{
link *p;

p=(link *)malloc(sizeof(link));
if(p==NULL)
{
return 0;
}
p->data=n;
p->next=tail->next;
tail->next=p;
return 0;
}

//3.当键盘输入一个负整数时,则队头元素出列
int delete()
{
link *p=tail,*q=p;

while(p->next!=tail)
{
q=p;p=p->next;
}