zoukankan      html  css  js  c++  java
  • 2020.10.3

      1 #include<stdio.h>
      2 #include <stdlib.h>
      3 #include<malloc.h>
      4 #define OK 1
      5 #define ERROR 0
      6 #define ElemType int
      7 typedef int Status;
      8 typedef struct LNode
      9 {
     10     int data;
     11     struct LNode *next;
     12 }LNode,*LinkList;
     13 Status InitList(LinkList &L){
     14     L=new LNode;
     15     L->next=NULL;
     16     return OK;
     17 }
     18 void CreateList_H(LinkList &L, int n) {            //头插法创建链表,最先创建的元素为链表尾 
     19     L=new LNode;
     20     LinkList p;
     21     L->next=NULL;
     22     for(int i=0;i<n;++i){
     23         p=new LNode;
     24         scanf("%d",&p->data);
     25         p->next=L->next;
     26         L->next=p;
     27     }
     28 }
     29 void CreateList_R(LinkList &L, int n) {            
     30     L=new LNode;
     31     LinkList p,r;
     32     L->next=NULL;
     33     r=L;
     34     for(int i=0;i<n;++i){
     35         p=new LNode;
     36         scanf("%d",&p->data);
     37         p->next=NULL;
     38         r->next=p;
     39     }
     40 }
     41 Status GetElem(LinkList L,int i,ElemType &e)
     42 {
     43     LinkList p=L;
     44     p=L->next;
     45     int j=1;
     46     while(p&&j<1)
     47     {
     48         p=p->next;
     49         ++j;
     50     }
     51     if(!p||j>i) return ERROR;
     52     e=p->data;
     53     return OK;
     54 }
     55 LNode *LocateElem(LinkList L,ElemType e)
     56 {
     57     LinkList p;
     58     p=L->next;
     59     while(p&&p->data!=e)
     60         p=p->next;
     61     return p;
     62 }
     63 Status ListInsert(LinkList &L,int i,ElemType e)
     64 {
     65     LinkList p,s;
     66     p=L;
     67     int j=0;
     68     while(p&&(j<i-1))
     69     {
     70         p=p->next;
     71         ++j;
     72     }
     73     if(!p||j>j-1) return ERROR;
     74     s=new LNode;
     75     s->data=e;
     76     s->next=p->next;
     77     p->next=s;
     78     return OK;
     79 }
     80 Status ListDelete(LinkList &L,int i)
     81 {
     82     LinkList p,q;
     83     p=L;
     84     int j=0;
     85     while((p->next)&&(j<i-1))
     86     {
     87         p=p->next;
     88         ++j;
     89     }
     90     if(!(p->next)||j>i-1) return ERROR;
     91     q=p->next;
     92     p->next=q->next;
     93     delete q;
     94     return OK;
     95 }
     96 void print(LinkList &L)
     97 {
     98     LinkList p=L->next;
     99     while(p)
    100    {
    101      printf("%d ",p->data);
    102      p=p->next;
    103    }
    104     printf("
    ");
    105 }
    106 int main(){
    107     LinkList list;
    108     LNode s;
    109     int n,m,i;
    110     InitList(list);
    111     printf(" 1.前插法    2.后插法
    ");
    112     scanf("%d",&i);
    113     if(i==1)
    114     {
    115        printf("创建链表个数为:");
    116        scanf("%d",&n);
    117        printf("使用前插法创建链表为:");
    118        CreateList_H(list,n);
    119        print(list);
    120     } 
    121     if(i==2)
    122     {
    123        printf("创建链表个数为:");
    124        scanf("%d",&n);
    125        printf("使用后插法创建链表为:");
    126        CreateList_R(list,n);
    127        print(list);
    128     }
    129     ListInsert(list,3,9);
    130     printf("在第3个位置插入9后链表为:");
    131     print(list);
    132     ListDelete(list,1);
    133     printf("删除第1个结点后链表为:");
    134     print(list);
    135     GetElem(list,1,m);
    136     printf("查询出第1个值为:%d
    ",m);
    137     s=*LocateElem(list,3);
    138     printf("查询出值为3的结点:%d",s);
    139 }
  • 相关阅读:
    iOS 自动化测试踩坑(二):Appium 架构原理、环境命令、定位方式
    干货 | 掌握 Selenium 元素定位,解决 Web 自动化测试痛点
    代理技术哪家强?接口 Mock 测试首选 Charles
    浅谈MVC缓存
    PetaPoco 快速上手
    解释器模式(26)
    享元模式(25)
    中介者模式(24)
    职责链模式(23)
    命令模式(22)
  • 原文地址:https://www.cnblogs.com/Nojava/p/13766000.html
Copyright © 2011-2022 走看看