m0_60346415 2022-09-10 14:25 采纳率: 100%
浏览 120
已结题

c语言链表的创建插入 删除 查找

运行不了
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int data;
struct node* next;
}NODE;
typedef NODE*LinkList;
void Option()
{
printf("1.链表的创建\n");
printf("2.链表的插入\n");
printf("3.链表的删除\n");
printf("4.链表的查找\n");
printf("0.退出\n");
}

void Print(LinkList Head)
{
while(Head->next!=NULL)
{
Head=Head->next;
printf("%d",Head->data);
}
printf("\n");
}

void CreateLinkList(LinkList *head)
{
system("cls");
if(head->next!=NULL)
{
printf("请勿重复创建链表!\n");
return;
}
else
printf("请输入5个数:\n");
LinkList end;
head=end=(LinkList)malloc(sizeof(NODE));
NODE *NewNode;
for(int i=1;i<=5;i++)
{
NewNode=(LinkList)malloc(sizeof(NODE));
scanf("%d",NewNode->data);
end->next=NewNode;
end=end->next;
}
end->next=NULL;
}

void InsertLinkList(LinkList *head)
{
system("cls");
if(head->next==NULL)
{
printf("请先创建链表!\n");
return;
}
Print(head);
int pos,num;
LinkList Link=head;
printf("请输入要插入的位置和数值:\n");
scanf("%d%d",&pos,&num);
while(Link->next!=NULL&&--pos)
Link=Link->next;
if(!pos)
{
NODE *NewNode;
NewNode=(LinkList)malloc(sizeof(NODE));
NewNode->data=num;
NewNode->next=Link->next;
Print(head);
}
else
printf("要插入的位置不存在!\n");
printf("\n");
}
void DeleteLinkList(LinkList &head)
{
system("cls");
if(head->next==NULL) //判断链表是否存在
{
printf("请先创建链表!\n");
return;
}
Print(head); //输出先前链表
int pos;
printf("请输入要删除的位置:\n");
LinkList Link=head;
scanf("%d",&pos);
whlie(Link->next!=NULL&&-- pos) //找到删除的位置
Link=Link->next;
if(!pos)
{
Link->next=Link->next->next;
Print(head);
}
else
printf("要插入的位置不存在!\n");
printf("\n");
}
void SearchLinkList(LinkList &head)
{
system("cls");
if(head->next==NULL) //判断链表是否存在
{
printf("请先创建链表!\n");
return;
}
Print(head);
int pos;
printf("请输入要查找数的位置:\n");
scanf("%d",&pos);
LinkList Link=head;
while(Link->next!=NULL&&-- pos) //找到查找的位置
Link=Link->next;
if(!pos)
printf("该位置上的数为%d",Link->next->data);
else
printf("要查找的数不存在!\n");
printf("\n");
}

int Choose() //选择函数
{
int k;
printf("请选择要进行的操作:\n");
scanf("%d",&k);
return k;
}
int main(int argc, char *argv[])
{
LinkList head;
head=(LinkList)malloc(sizeof(NODE)); //创建链表并分配地址
head->data=NULL;
head->next=NULL;
while(1)
{
Option();
switch(Choose())
{
case 1:CreateLinkList(head);
break;
case 2:InsertLinkList(head);
break;
case 3:DeleteLinkList(head);
break;
case 4: SearchLinkList(head);
break;
default :printf("输入错误!\n");
break;
case 0:return 0;
}
}
}

  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2022-09-10 15:09
    关注

    错误比较多,10元悬赏都少啊

    #include <stdio.h>
    #include <stdlib.h>
    typedef struct node
    {
        int data;
        struct node* next;
    }NODE;
    typedef NODE *LinkList;
    void Option()
    {
        printf("1.链表的创建\n");
        printf("2.链表的插入\n");
        printf("3.链表的删除\n");
        printf("4.链表的查找\n");
        printf("0.退出\n");
    }
    
    void Print(LinkList Head)
    {
        while(Head->next!=NULL)
        {
            Head=Head->next;
            printf("%d ",Head->data);
        }
        printf("\n");
    }
    
    void CreateLinkList(LinkList head)
    {
        system("cls");
        if(head->next!=NULL)
        {
            printf("请勿重复创建链表!\n");
            return;
        }
        else
            printf("请输入5个数:\n");
        LinkList end = head;
        for(int i=1;i<=5;i++)
        {
            NODE *NewNode=(LinkList)malloc(sizeof(NODE));
            scanf("%d",&NewNode->data);
            NewNode->next = NULL;
            end->next=NewNode;
            end = NewNode;
        }
        Print(head);
    }
    
    void InsertLinkList(LinkList head)
    {
        system("cls");
        if(head->next==NULL)
        {
            printf("请先创建链表!\n");
            return;
        }
        Print(head);
        int pos,num;
        LinkList Link=head;
        printf("请输入要插入的位置和数值:\n");
        scanf("%d%d",&pos,&num);
        while(Link->next!=NULL&&--pos)
            Link=Link->next;
        if(!pos)
        {
            NODE *NewNode=(LinkList)malloc(sizeof(NODE));
            NewNode->data=num;
            NewNode->next=Link->next;
            Link->next = NewNode;
            Print(head);
        }
        else
            printf("要插入的位置不存在!\n");
        printf("\n");
    }
    void DeleteLinkList(LinkList head)
    {
        system("cls");
        if(head->next==NULL) //判断链表是否存在
        {
            printf("请先创建链表!\n");
            return;
        }
        Print(head); //输出先前链表
        int pos;
        printf("请输入要删除的位置:\n");
        LinkList Link=head;
        scanf("%d",&pos);
        while(Link->next!=NULL&&-- pos) //找到删除的位置
            Link=Link->next;
        if(!pos)
        {
            Link->next=Link->next->next;
            Print(head);
        }
        else
            printf("要插入的位置不存在!\n");
        printf("\n");
    }
    void SearchLinkList(LinkList head)
    {
        system("cls");
        if(head->next==NULL) //判断链表是否存在
        {
            printf("请先创建链表!\n");
            return;
        }
        Print(head);
        int pos;
        printf("请输入要查找数的位置:\n");
        scanf("%d",&pos);
        LinkList Link=head;
        while(Link->next!=NULL&&-- pos) //找到查找的位置
            Link=Link->next;
        if(!pos)
            printf("该位置上的数为%d\n",Link->next->data);
        else
            printf("要查找的数不存在!\n");
        printf("\n");
    }
    
    int Choose() //选择函数
    {
        int k;
        printf("请选择要进行的操作:\n");
        scanf("%d",&k);
        return k;
    }
    int main(int argc, char *argv[])
    {
        LinkList head;
        head=(LinkList)malloc(sizeof(NODE)); //创建链表并分配地址
        head->data=NULL;
        head->next=NULL;
        while(1)
        {
            Option();
            switch(Choose())
            {
            case 1:CreateLinkList(head);
                break;
            case 2:InsertLinkList(head);
                break;
            case 3:DeleteLinkList(head);
                break;
            case 4: SearchLinkList(head);
                break;
            default :printf("输入错误!\n");
                break;
            case 0:
                return 0;
            }
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 9月19日
  • 已采纳回答 9月11日
  • 赞助了问题酬金10元 9月10日
  • 创建了问题 9月10日

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来