#include<stdio.h>
#include<stdlib.h>
typedef int elemtype;
typedef struct node
{
elemtype data;
struct node *next;
}node;
struct node *head;
int n;
void bulid1()//尾插法
{
struct node *p,*q;
q=head;
int i;
for (i=1;i<=n;i++)
{
p=(struct node*)malloc(sizeof(struct node));
scanf("%d",&p->data);
q->next=p;
p->next=NULL;
q=p;
}
}
void bulid2()//头插法
{
struct node *p;
int i;
for (i=1;i<=n;i++)
{
p=(struct node*)malloc(sizeof(struct node));
scanf("%d",&p->data);
p->next=head->next;
head->next=p;
}
}
void insert(int num,int pos)
{
int i;
struct node *p,*q;
q=head;
for (i=1;i<=pos;i++)
q=q->next;
p=(struct node*)malloc(sizeof(struct node));
p->data=num;
p->next=q->next;
q->next=p;
}
void Delete(int pos)
{
int i;
struct node *q,*p;
q=head;
for (i=1;i<pos;i++)
q=q->next;
p=q->next->next;
q->next=p;
}
int find(int key)
{
struct node *p=head;
int i=0;
while (head->data!=key)
{
head=head->next;
++i;
if (head->next==NULL) {i=-1; break;}
}
return i;
}
void output()
{
struct node *h=head;
h=h->next;
while (h->next!=NULL)
{
printf("%d ",h->data);
h=h->next;
}
printf("%d\n",h->data);
}
int main()
{
int num,pos;
head=(struct node*)malloc(sizeof(struct node));
head->next=NULL;
scanf("%d",&n);
bulid1();
output();
scanf("%d%d",&num,&pos);
insert(num,pos);
output();
scanf("%d",&pos);
Delete(pos);
output();
scanf("%d",&num);
printf("%d",find(num));
head=(struct node*)malloc(sizeof(struct node));
head->next=NULL;
scanf("%d",&n);
bulid2();
output();
return 0;
}
实验二 线性表的链式表示与实现
最新推荐文章于 2022-09-25 21:00:21 发布