链表

#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 if(x==5){
if(!la){
printf("请先初始化链表a\n");
break;
}
if(!la){
printf("请先初始化链表b\n");
break;
}
unionlist(la,lb);

else
break;
}
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值