qq_39677327 2022-05-04 02:39 采纳率: 94.9%
浏览 640
已结题

建立一个单链表,随机产生10个100以内的整数,代码已有,希望完善

建立一个单链表,随机产生10个100以内的整数,并按要求完成:
(1)在屏幕上显示单链表中的10个整数;
(2)删除值为a的结点,若不存在a,则把a插入到表尾,显示更新后的单链表;

以下代码未完成(2)希望完善


#include<stdio.h>
#include<stdlib.h>
#include<time.h>
    struct Node{
        int Data;
        struct Node*Next;
    };
    void Print(struct Node *L){
        struct Node *q;
        q=L->Next;
        while(q!=NULL){
            printf("%d   ",q->Data);
            q=q->Next;
        }
    }

    void Insert(struct Node*L,int n){
        struct Node*p,*q;
        p=L;
        q=(struct Node*)malloc(sizeof(struct Node));

        while(p->Next!=NULL&&p->Next->Data<n){
            p=p->Next;
        }
        q->Data=n;
        q->Next=p->Next;
        p->Next=q;    
        
    }
    int main(){
        struct Node *L;
        L=(struct Node*)malloc(sizeof(struct Node));
        L->Next=NULL;
        srand((int)time(NULL));
        int i;
        for(i=0;i<10;i++){
    
            Insert(L,rand()%100); 
        }
        Print(L);
        return 0;
    }



  • 写回答

2条回答 默认 最新

  • 关注

    你题目的解答代码如下:

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
        struct Node{
            int Data;
            struct Node*Next;
        };
        void Print(struct Node *L){
            struct Node *q;
            q=L->Next;
            while(q!=NULL){
                printf("%d   ",q->Data);
                q=q->Next;
            }
        }
    
        void Insert(struct Node*L,int n){
            struct Node*p,*q;
            p=L;
            q=(struct Node*)malloc(sizeof(struct Node));
    
            while(p->Next!=NULL&&p->Next->Data<n){
                p=p->Next;
            }
            q->Data=n;
            q->Next=p->Next;
            p->Next=q;
    
        }
        void append(struct Node*L,int n){
            struct Node*p,*q;
            p=L;
            q=(struct Node*)malloc(sizeof(struct Node));
            while(p->Next!=NULL){
                p=p->Next;
            }
            q->Data=n;
            q->Next=NULL;
            p->Next=q;
        }
        void del(struct Node*L,int n){
            struct Node*p,*q;
            p=L->Next;
            q=L;
            while(p!=NULL){
                if (p->Data==n)
                    q->Next = p->Next;
                else
                    q = p;
                p=p->Next;
            }
        }
        struct Node* search(struct Node*L,int n){
            struct Node*p;
            p=L->Next;
            while(p!=NULL){
                if (p->Data==n)
                    return p;
                p=p->Next;
            }
            return NULL;
        }
    
    
        int main(){
            struct Node *L;
            L=(struct Node*)malloc(sizeof(struct Node));
            L->Next=NULL;
            srand((int)time(NULL));
            int i;
            for(i=0;i<10;i++){
    
                Insert(L,rand()%100);
            }
            Print(L);
            printf("\n");
            int a;
            scanf("%d", &a);
            if (search(L,a))
                del(L,a);
            else
                append(L,a);
            Print(L);
            return 0;
        }
    

    如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月12日
  • 已采纳回答 5月4日
  • 修改了问题 5月4日
  • 创建了问题 5月4日

悬赏问题

  • ¥15 plotBAPC画图出错
  • ¥30 关于#opencv#的问题:使用大疆无人机拍摄水稻田间图像,拼接成tif图片,用什么方法可以识别并框选出水稻作物行
  • ¥15 Python卡尔曼滤波融合
  • ¥20 iOS绕地区网络检测
  • ¥15 python验证码滑块图像识别
  • ¥15 根据背景及设计要求撰写设计报告
  • ¥20 能提供一下思路或者代码吗
  • ¥15 用twincat控制!
  • ¥15 请问一下这个运行结果是怎么来的
  • ¥15 单通道放大电路的工作原理