您的位置:首页 > 其它

链表

2013-10-30 14:12 204 查看
#include"stdio.h"
#include"stdlib.h"
#define ERROR 0
#define OK  1

typedef struct node
{
int  data;
struct node *next;
}node, *linklist;

void creatfifo(linklist &l,int n)
{
linklist p,q;
int i;
l=(linklist)malloc(sizeof(node));
l->next=NULL;
p=l;
for(i=1;i<=n;i++)
{
q=(linklist)malloc(sizeof(node));
scanf("%d",&q->data);
p->next=q;
p=q;
}
p->next=NULL;
}

void print(linklist l)
{
linklist p;
p=l->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}

int charu(linklist &l,int i,int e)
{
int j;
linklist p,s;
p=l;
j=0;
while(p&&j<i-1){p=p->next;++j;}
if(!(p->next)||j>i-1)return ERROR;
s=(linklist)malloc(sizeof(node));
s->data=e;s->next=p->next;
p->next=s;
return OK;
}

int shanchu(linklist &l,int i,int &e)
{
int j;
linklist p,q;
p=l;j=0;
while(p->next&&j<i-1){p=p->next;++j;}
if(!(p->next)||j>i-1)return ERROR;
q=p->next;p->next=q->next;
e=q->data;free(q);
return OK;
}

int hebing(linklist &l,linklist &k,linklist &h)
{
linklist  l1,k1,h1;
l1=l->next;k1=k->next;
h=h1=l;
while(l1&&k1){
if(l1->data<=k1->data){h1->next=l1;h1=l1;l1=l1->next;
}
else{h1->next=k1;h1=k1;k1=k1->next;}
}
h1->next=l1?k1:h1;
free(k);
return 0;
}

int main()
{
linklist l,k,h;
int n,e,i,m;
scanf("%d",&n);
creatfifo(l,n);
print(l);
printf("请输入在第几个位置插入100\n");
e=100;
scanf("%d",&i);
charu(l,i,e);
print(l);
scanf("%d",&i);
shanchu(l,i,e);
print(l);
printf("请输入第二个链表的个数\n");
scanf("%d",&m);
creatfifo(k,m);
print(k);
hebing(l,k,h);
print(l);
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: