zoukankan      html  css  js  c++  java
  • 线性表的链式表(单链表类型)

    仿写的一个简单而傻逼的程序,线性表入门。。。

    希望把这几个程序弄完了,能搞出个简单的系统来O(∩_∩)O

    /*******************************************
    实验内容二:
     1.用C语言定义线性表的链式存储结构(单链表)类型;
     2.编制链式存储结构下的线性表的输入程序;
     3.编制链式存储结构下线性表的插入算法程序或删除算法程序;
     4.编制链式存储结构下的线性表的输出程序;
     5.在链式存储结构下编制主程序:输入一个具体的线性表,
       然后随意地在表中的任意位置执行插入一个元素
       或删除一个元素的操作,最后输出线性表的操作结果。
    ********************************************/
    //线性表的链式结构(单链表类型)
    #include<iostream>
    #include<stdio.h>
    #include<stdlib.h>
    #include<malloc.h>
    using namespace std;
    #define OK 1//成功
    #define ERROR 0
    #define OVERFLOW 0//溢出标志或者分配失败
    typedef int ElemType;
    typedef int Status;
    typedef struct LNode
    {
        ElemType data;//节点数据
        LNode *next;//节点的下一个地址
    }LNode,*LinkList;
    //初始化一个空表
    Status InitList(LinkList &L)
    {
        L=new LNode;//建立新表
        if(!L)
          exit(OVERFLOW);//存储分配失败
        L->data=-1;
        L->next=NULL;
        return OK;
    }
    //输出数据**************
    void PrintList(LinkList L)
    {
        LinkList p;
        printf("你输入的数据为:");
        p=L->next;//从头结点开始扫描
        while(p)
        {
            printf("%d ",p->data);
            p=p->next;
        }
        printf("\n\n");
    }
    //逆序输入n个数据元素,存入表中
    void CreateList_L(LinkList &L,int n)//LinkList &L
    {
        int i;
        LinkList p;
        printf("逆序输入%d个数据元素:\n",n);
        for(i=n;i>0;i--)
        {
            p=new LNode;
            scanf("%d",&p->data);
            p->next=L->next;
            L->next=p;
        }
    }
    //删除
    Status ListDelete_L(LinkList L,int i,ElemType &e)
    {
        LinkList p,q;
        int j;
        p=L ; j=0;
        while(p->next && j<i-1)
        {
            p=p->next;j++;
        }
        if(!(p->next) || j>i-1)
          return ERROR;
        q=p->next; p->next=q->next;
        e=q->data; free(q);
        return OK;
    }
    //插入
    Status ListInsert_L(LinkList L,int i)
    {
        LinkList p,q;
        int j=0;
        p=L;
        while(p && j<i-1)
        {
            p=p->next;j++;
        }
        if(!(p->next) || j>i-1)
           return ERROR;
        q=new LNode;
        printf("请输入插入的元素:");
        scanf("%d",&q->data);
        q->next=p->next;
        p->next=q;
        return OK;
    }
    
    int main()
    {
       LinkList L;
       ElemType e;
       int countinue;
       int n;
       int i;
       char YesOrNo;
       InitList(L);//初始化空表
       printf("欢迎使用free斩的第一个线性链式表:\n");
       do
       {
           printf("**********************请选择操作*****************************\n");
           printf("*******               1.输入顺序表                    *******\n");
           printf("*******               2.删除顺序表中任一元素          *******\n");
           printf("*******               3.在顺序表中插入任一元素        *******\n");
           printf("*******               4.输出顺序表                    *******\n");
           printf("*******               5.退出                          *******\n");
           int _select=0;
           countinue=1;
           scanf("%d",&_select);
           switch(_select)
           {
               case 1:
                      printf("请输入链表中元素个数:");
                      scanf("%d",&n);
                      CreateList_L(L,n);
                      printf("逆序输出你输入的链表:");
                      PrintList(L);
                      printf("是否退出程序(Y/N)?\n");
                      scanf("%s",&YesOrNo);
                      if(YesOrNo=='Y' || YesOrNo=='y')
                         countinue=0;
                      break;
               case 2:
                      printf("请输入你要删除的元素位置:");
                      scanf("%d",&i);
                      ListDelete_L(L,i,e);
                      PrintList(L);
                      printf("是否退出程序(Y/N)?\n");
                      scanf("%s",&YesOrNo);
                      if(YesOrNo=='Y' || YesOrNo=='y')
                         countinue=0;
                      break;
               case 3:
                      printf("请输入你要插入元素的位置:");
                      scanf("%d",&i);
                      ListInsert_L(L,i);
                      PrintList(L);
                      printf("是否退出程序(Y/N)?\n");
                      scanf("%s",&YesOrNo);
                      if(YesOrNo=='Y' || YesOrNo=='y')
                         countinue=0;
                      break;
               case 4:PrintList(L);
                      printf("是否退出程序(Y/N)?\n");
                      scanf("%s",&YesOrNo);
                      if(YesOrNo=='Y' || YesOrNo=='y')
                         countinue=0;
                      break;
               case 5:printf("感谢您的使用!!!\n");
                      printf("writer LYH\n");
                      countinue=0;
            }
       }while(countinue);
       return 0;
    }
    


  • 相关阅读:
    使用Datagrip导入excel数据
    idea2020版本的lombok不能使用
    wait和notify
    死锁的原因
    synchronized关键字
    线程JOIN
    JSON解析精度丢失问题(net.sf.json)
    线程中断
    spring boot 2.0.0 + mybatis 报:Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
    2、Dubbo源码解析--服务发布原理(Netty服务暴露)
  • 原文地址:https://www.cnblogs.com/freezhan/p/2776476.html
Copyright © 2011-2022 走看看