用C语言实现: (1)用头插法(或尾插法)建立带头结点的单链表;
1个回答
展开全部
#include<stdio.h>
#include<stdlib.h>
typedef struct lista{
struct lista *next;
int data;
}list;
void insert(list *h);
void del(list *h);
int main()
{
int flag;
list *head=(list *)malloc(sizeof(list));
head->next=NULL;
while(1)
{
printf("/***********************************************************/\n");
printf("请选择链表操作:\n 1:插入\n 2:删除\n输入数字进行选择:");
scanf("%d",&flag);
if(flag==1)
insert(head);
else if(flag==2)
del(head);
else
printf("输入有误,请重新选择!\n");
}
}
void insert(list *h)
{
int num,dat;
list *lh;
printf("请选择插入个数:\n");
scanf("%d",&num);
printf("要插入的数据:\n");
while(num--)
{
scanf("%d",&dat);
list *p=(list *)malloc(sizeof(list));
p->next=h->next;
h->next=p;
p->data=dat;
}
printf("插入后链表中的值:\n");
lh=h->next;
while(lh)
{
printf("%d ",lh->data);
lh=lh->next;
}
printf("\n\n\n");
}
void del(list *h)
{
int dat,flag;
list *lh;
printf("请输入要删除的值:\n");
scanf("%d",&dat);
lh=h;
while(lh->next)
{
if(lh->next->data==dat)
{
flag=1;
lh->next=lh->next->next;
break;
}
lh=lh->next;
}
if(flag)
{
lh=h->next;
printf("删除后链表中的值:\n");
while(lh)
{
printf("%d ",lh->data);
lh=lh->next;
}
printf("\n\n\n");
}
else
printf("链表中无匹配值\n\n\n");
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询