数据结构C语言单链表删除最大值

小白,多多包涵,提出建议,会改正!VC6.0环境。

 缺点没考虑重复数字!

297cca69c71948dda1fddbdf03092533.png

#include<stdio.h>

#include<malloc.h>

typedef int DataType;

typedef struct linknode

{

DataType data;

struct linknode *next;

}LinkList;

LinkList *InitList()

{

LinkList *head;

head=(LinkList*)malloc(sizeof(LinkList));

head->next=NULL;

return head;

}

void CreateListL(LinkList *head,int n)

{

LinkList *s,*last;

int i;

last=head;

printf("请输入%d个整数:",n);

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

{

s=(LinkList *) malloc(sizeof(LinkList));

scanf("%d",&s->data);

s->next=NULL;

last->next=s;

last=s;

}

printf("建立链表操作成功!");

}

int Locate(LinkList *head,DataType x)/*寻找位置*/

{

int j=1;

LinkList *p;

p=head->next;

while(p!=NULL && p->data!=x)

{

p=p->next;

j++;

}

if(p!=NULL)

printf("在表的第%d位找到值为%d的最大值结点!",j,x);

else

printf("错误");

return j;

}

void DelList(LinkList *head,int i)/*删除结点*/

{

int j=0;

DataType x;

LinkList *p=head,*s;

while(p->next!=NULL && j<i-1)

{

p=p->next;

j++;

}

if(p->next!=NULL && j==i-1)

{

s=p->next;

x=s->data;

p->next=s->next;

free(s);

printf("\n");

printf("删除第%d位上的元素%d成功!",i,x);

}

else

printf("删除结点的位置错误,删除失败!");

}

void DispList(LinkList *head)/*显示输出函数*/

{

LinkList *p;

p=head->next;

while(p!=NULL)

{

printf("%5d",p->data);

p=p->next;

}

}

int max(LinkList *head)

{

LinkList *p;



int x;

p=head->next;

x=p->data;

while(p->next!=NULL)

{



if(x < p->next->data)

x=p->next->data;

else

x=x;

p=p->next;

}

return x;

}



void main()

{

LinkList *head;

int n,j;

DataType m;

head=InitList();

printf("请输入要建立的线性表的长度:");

scanf("%d",&n);

CreateListL(head,n);

printf("建立后的线性表为:\n");

DispList(head);

m=max(head);

printf("\n");

j=Locate(head,m);

DelList(head,j);

printf("\n");

printf("删除最大值的元素后的线性表为:\n");

DispList(head);

printf("\n");

}

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值