非递减有序排列C语言,已知一顺序表A,其元素值非递减有序排列,编写一个函数删除顺序表中多余的值...

该博客主要介绍了链表数据结构的初始化、入栈和出栈操作。通过定义`qnode`结构体来创建链表节点,使用`li`结构体来管理链表的头部和尾部。`f`函数用于初始化链表,`g`函数实现了当链表为空时插入第一个节点,以及在链表中插入新节点的功能。`r`函数则实现了出栈操作,删除链表中连续重复的元素并打印剩余元素。在`main`函数中,用户可以输入要插入的数值,程序将这些数值按顺序插入链表并进行出栈展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include

#include

typedef struct qnode

{

int data;

struct qnode *next;

}qu;

typedef struct

{

qu *front;

qu *rear;

}li;

li *l,head;

void f(li *l)

{

l->front=(qu *)malloc(sizeof(qu));

if(!l->front)

printf("overflow!");

else

{

l->rear=l->front;

l->front->next=NULL;

printf("ok!");

}

}

void g(li *l,int

e) 进栈

{

qu *p;

if(l->front==l->rear) 要先插入第一个结点

l->front->data=e;

p=(qu *)malloc(sizeof(qu));

if(!p)

printf("overflow!");

p->data=e;

p->next=NULL;

l->rear->next=p;

l->rear=p;

}

r(li *l)

{

qu *p;

while(l->front!=l->rear)

{if(l->front->data==l->front->next->data)

l->front=l->front->next; 删除某个数即将头指针向后移

else

{

printf("%5d\n",l->front->data);

l->front=l->front->next;

}

}

printf("%5d\n",l->front->data);

}

void main()

{

int n,i,m;

l=&head;

f(l);

printf("how many nums do you want to put:");

scanf("%d",&n);

printf("the num is\n");

for(i=1;i<=n;i++)

{printf("%d:",i);

scanf("%d",&m);

g(l,m);

printf("\n");

}

r(l);

}_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值