您的位置:首页 > 其它

链表

2016-01-04 17:24 351 查看
#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#define len sizeof(struct list)

struct list{
int data;
struct list *next;

}; 

struct list *la,*lb;

struct list *initlist(){
struct list *head;
head=(struct list*)malloc(len);
return head;

}

struct list *insertlist(struct list*la){
int n;
struct list *head,*p1;
head=la;
printf("请输入需要插入元素的个数:n"); 
scanf("%d",&n);
printf("\n");
while(n--)
{
p1=(struct list*)malloc(len);
scanf("%d",&p1->data);
p1->next=NULL;
la->next=p1;
la=p1;

return head;

}

void getElem(struct list *la)

{
printf("请输入你想的到元素的位置n:");
int n;
scanf("%d",&n);
printf("\n");
while(n&&la->next)
{
n--;
la=la->next;

if(n)
printf("您要查找的数超出范围:\n");
else 
printf("%d\n",la->data);

}

void listinsert(struct list *la)

{
int n,e;
printf("请输入你要插入的元素和位置");
scanf("%d%d",&n,&e);
struct list *p1;
while(n&&la->next){
n--;
p1=la;
la=la->next;
}
if(n)
printf("你所要插入的位置已经超出范围了。\n");
else 
{
struct list *p2;
p2=(struct list*)malloc(len);
p2->data=e;
p2->next=p1->next;
p1->next=p2;
printf("插入成功\n"); 
}

 } 

 void unionlist(struct list *pa,struct list*pb)

 {

  struct list *head;

  head=pa;

  while(pa->next)

  {

  pa=pa->next;
}
pa=pb->next;
printf("合并后的链表是:\n");
while(head->next)
{
printf("%d ",head->next->data);
head=head->next;
 } 
 printf("\n");

 }

 int main(){
while(1){
printf("************************************************************\n");
printf("*             请输入你要实现的功能前的序号                 *\n");
printf("*             1 初始化链表                                 *\n");
printf("*             2 对链表进行赋值                             *\n");
printf("*             3 向链表中取值                               *\n");
printf("*             4 向链表中插入元素                           *\n");
printf("*             5 归并链表                                   *\n"); 
printf("*             6 退出程序                                   *\n");
printf("************************************************************\n");
int x;
scanf("%d",&x);
if(x==1){
printf("请输入你要初始化的链表a,b\n\n");
getchar();
char ch;
ch=getchar();
if(ch=='a'){
la=initlist();
if(!la)
printf("初始化失败\n\n"); 
else{
la->next=NULL;
printf("初始化成功\n\n"); 
}
}
else if(ch=='b'){
lb=initlist();
if(!lb)
printf("初始化失败\n\n"); 
else{
lb->next=NULL;
printf("初始化成功\n\n"); 
}
}
else
printf("输入错误\n\n");
}
else if(x==2){
printf("请输入你要进行赋值的链表a或者b\n\n");
getchar();
char ch=getchar();
if(ch=='a') {
if(!la)
printf("请先对链表a进行初始化\n\n");
else
la=insertlist(la); 
}
else if(ch=='b'){
if(!lb)
printf("请先对链表b进行初始化\n\n");
else
lb=insertlist(lb);
}
}
else if(x==3){
printf("请输入你要进行取值的链表a或者b\n\n");
getchar();
char ch=getchar();
if(ch=='a') {
if(!la)
printf("请先对链表a进行初始化\n\n");
else
getElem(la); 
}
else if(ch=='b'){
if(!lb)
printf("请先对链表b进行初始化\n\n");
else
getElem(lb);
}
}
else if(x==4){
printf("请输入你要进行插入的链表a或者b\n\n");
getchar();
char ch=getchar();
if(ch=='a') {
if(!la)
printf("请先对链表a进行初始化\n\n");
else
   listinsert(la); 
}
else if(ch=='b'){
if(!lb)
printf("请先对链表b进行初始化\n\n");
else
listinsert(lb);
}

else
aacb
if(x==5){
if(!la){
printf("请先初始化链表a\n");
break;
}
if(!la){
printf("请先初始化链表b\n");
break;
}
unionlist(la,lb);

else
break;
}
return 0;

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