《数据结构》C语言版,编写一个简单的菜单,已给出代码,求助啊怎么把他们连接好,快要交作业了

2024-12-25 12:10:10
推荐回答(1个)
回答1:

#include 
#include 

struct Link{
int date;
Link* next;
};

Link *L,*head,*tail;
int LinkNumber;//保存date数量

void InitList(Link* p)
{
printf("请输入链表保存数字个数LinkNumber:");
int n,date;
scanf("%d",&n);
LinkNumber=n;
printf("请输入各位数字,用空格隔开:");
scanf("%d",&date);
p=(Link*)malloc(sizeof(Link));
p->date=date;
head=p;
tail=p;
p->next=NULL;
for(int i=1;i scanf("%d",&date);
p=(Link*)malloc(sizeof(Link));
p->date=date;
tail->next=p;
p->next=NULL;
tail=p;
}
}

void printfff(Link* p)
{
printf("link follow as:\n");
for (Link* tmp=head;tmp!=NULL;tmp=tmp->next)
{
printf("%d ",tmp->date);
}
printf("\n");
}

void ListInsert(Link* p,int postion,int value)
{
int i=0;
if(postion==1) //插入在开头
{
Link* NewHead;
NewHead=(Link*)malloc(sizeof(Link));
NewHead->date=value;
NewHead->next=head;
head=NewHead;
LinkNumber++;
}
else if(postion==LinkNumber+1)  //插入在末尾
{
Link* NewTail;
NewTail=(Link*)malloc(sizeof(Link));
NewTail->date=value;
tail->next=NewTail;
NewTail->next=NULL;
tail=NewTail;
}
else{
for(Link *tmp=head;tmp;tmp=tmp->next)
{
i++;
if(i==postion-1)
{
Link* NewNode;
NewNode=(Link*)malloc(sizeof(Link));
NewNode->date=value;
NewNode->next=tmp->next;
tmp->next=NewNode;
LinkNumber++;
}
}
}

}

void ListDelete(Link* p,int postion)
{
int i=0;
if(postion==1)
{
head=head->next;
LinkNumber--;
}
else if(postion==LinkNumber)
{
for(Link* tmp=head;tmp!=NULL;tmp=tmp->next)
{
if(tmp->next->next==NULL)
{
tail=tmp;
tmp->next=NULL;
LinkNumber--;
return;
}
}
}
else{
for(Link* tmp=head;tmp!=NULL;tmp=tmp->next)
{
i++;
if(i==postion-1)
{
tmp->next=tmp->next->next;
LinkNumber--;
return;
}
}}

}
void main(){
int cord,i,d;
do{
printf("\n        main        \n");
printf("     1   Creat  \n");
printf("     2  Insert   \n");
printf("     3  Delete   \n");
printf("     4  Exit   \n");
printf("-----------------------------------------\n");
printf(" Please put your chioce (1-4) ");
scanf("%d",&cord);
switch(cord)
{
case 1:
{
InitList(L);
printfff(L);
}break;
case 2:
{
printf("the position you want toinsert: ");
scanf("%d",&i);
printf("the data you want toinsert: ");
scanf("%d",&d);
ListInsert(L,i,d);
printfff(L);
}break;
case 3:
{
printf("the position you want todelete: ");
scanf("%d",&i);
ListDelete(L,i);
printfff(L);
}break;
case 4:
{
exit(0);
}break;
}
}while(cord<=4&&cord>=0);
}
满意请采纳哦!
不懂的可以问,求加分,能实现,有什么需要改动的也可以改!