#include <stdlib.h>
#include <string.h>
typedef struct as{
int date;
struct as *next;
}*linklist,lnode;
linklist l;
int n;
void init()
{
l=(linklist)malloc(sizeof(lnode));
l->next=NULL;
}
//用尾插法建立链表
void build1()
{
linklist p,q;
q=l;
int i;
for(i=1;i<=n;i++)
{
p=(linklist)malloc(sizeof(lnode));
scanf("%d",&p->date);
q->next=p;
q=p;
}
}
//头插法建立链表
void build2()
{
linklist p;
int i;
for(i=0;i<n;i++)
{
p=(linklist)malloc(sizeof(lnode));
scanf("%d",&p->date);
p->next=l->next;
l->next=p;
}
}
//找到第i个数
void search(int i)
{
linklist p;
p=l->next;
int j=1;
while(p!=NULL&&j<i)
{
p=p->next;
j++;
}
//printf("%d\n",p->date);
}
//删除第i个数
void delet(int i)
{
linklist p,pre;
p=l->next;
pre=l;
int j=1;
while(p!=NULL&&j<i)
{
p=p->next;
pre=pre->next;
j++;
}
pre->next=p->next;
}
//将节点插入到i位置上
void ch(int i,int k)
{
linklist p,pre,f;
p=l->next;
pre=l;
f=(linklist)malloc(sizeof(lnode));
f->date=k;
f->next=NULL;
int j=1;
while(p!=NULL&&j<i)
{
p=p->next;
pre=pre->next;
j++;
}
pre->next=f;
f->next=p;
}
//输出
void shuchu()
{
linklist p;
p=l->next;
int i;
for(i=1;i<=n;i++)
{
printf("%d\n",p->date);
p=p->next;
}
}
int main()
{
int m;//书上最简单的几个操作
scanf("%d",&n);
init();
scanf("%d",&m);
if(m==1)
build1();
else
build2();
search(1);
delet(1);
ch(1,1);
shuchu();
return 0;
}
数据结构——链表(最简单的几个操作)
最新推荐文章于 2019-10-17 16:06:48 发布