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日

悬赏问题

  • ¥50 sft下载大文阻塞卡死
  • ¥15 机器人轨迹规划相关问题
  • ¥15 word样式右侧翻页键消失
  • ¥15 springboot+vue 集成keycloak sso到阿里云
  • ¥15 win7系统进入桌面过一秒后突然黑屏
  • ¥30 backtrader对于期货交易的现金和资产计算的问题
  • ¥15 求C# .net4.8小报表工具
  • ¥15 安装虚拟机时出现问题
  • ¥15 Selenium+docker Chrome不能运行
  • ¥15 mac电脑,安装charles后无法正常抓包