zoukankan      html  css  js  c++  java
  • 13.1.22:线性表之单链表

      1 /*
      2 1.不带头结点的单链表。
      3 2.需要修改,有引用在里面,只是伪代码。
      4 
      5 
      6 Levi.
      7        date:2013.1.22
      8 */
      9 
     10 #include <stdio.h>
     11 #include "sys/malloc.h"
     12 #include <stdlib.h>
     13 
     14 typedef struct LNode{
     15     TypeElem data;
     16     struct LNode *next;
     17 };
     18 
     19 typedef struct LNode * LinkList;
     20 
     21 void InitList(LinkList *L){
     22     *L=NULL;
     23 }
     24 
     25 void ClearList(LinkList *L){
     26     LinkList p;
     27     while(L){        
     28         p=L;
     29         L=p->next;
     30         free(p);
     31         p=NULL;
     32     }
     33 }
     34 
     35 void ListEmpty(LinkList L){
     36     if(L)
     37               printf("The L is not NULL\n");
     38     else
     39               printf("The L is NULL\n");
     40               
     41 }
     42 
     43 int ListLength(LinkList L){
     44     LinkList p;
     45     p=L;
     46     int count=0;
     47     while(p){
     48         p=p->next;
     49         ++count;
     50     }
     51     return count;
     52 }
     53 
     54 int GetElem(LinkList L,int i,ElemType *e){
     55     LinkList p;
     56     p=L;
     57     int count=1;
     58     while(p&&count<i){
     59         p=p->next;
     60         ++count;
     61     }
     62     if(!p||count>i){
     63         printf("Get error !!\n");
     64         return 0;
     65     }
     66     p->data=*e;
     67     return 0;
     68 }
     69 
     70 int LocateElem(LinkList L,ElemType e){
     71     int i=1;
     72     LinkList p=L;
     73     while(p&&p->data!=e){
     74         p=p->next;
     75         i++;
     76     }
     77     if(!p)
     78               return -1;
     79     else
     80               return i;
     81 }
     82 
     83 int ListInsert(LinkList &L,int i,ElemType e){
     84     int j=1;
     85     LinkList s,p=L;
     86     if(i<1)
     87               return -1;
     88     s=(LinkList)malloc(sizeof(struct LNode));
     89     s->data=e;
     90     if(i==1){
     91     s->next=L;
     92     L=s;
     93     }
     94 
     95     else{
     96         while(p&&j<i-1){
     97             p=p->next;
     98             ++j;
     99         }
    100         if(!p)
    101                   return -1;
    102         s->next=p->next;
    103         p->next=s;
    104 
    105     }
    106     return 0;
    107 }
    108 
    109 int ListDelete(LinkList &L,int i,ElemType *e){
    110     int j=1;
    111     LinkList p=L,q;
    112     if(i<1)
    113               return -1;
    114     else if(i==1){
    115         L=p->next;
    116         *e=p->data;
    117         free(p);
    118         
    119     }
    120 
    121     else{
    122         while(p->next&&j<i-1){
    123             ++j;
    124             p=p->next;
    125         }
    126         if(!p>next||j>i-1)
    127                   return -1;
    128         q=p->next;
    129         p->next=q->next;
    130         *e=q->data;
    131         free(q);
    132 
    133     }
    134     return 0;
    135 }
    136 
    137 void ListTraverse(LinkList L,void(*vi)(int)){
    138     LinkList p=L;
    139     while(p){
    140         vi(p->data);
    141         p=p->next;
    142     }
    143     printf("\n");
    144 }
    145 
    146 
    147 
    148     
  • 相关阅读:
    6-快捷键
    5(拓展)-页面内跳转
    4-html图片与链接
    3-html块-语义化的标签
    2-html标题、段落、换行与常用的字符实体
    1-html基本结构与编写规范
    BeautifulSoup模板简单应用-提取html指定数据(api_name/api_method/api_path,请求body/请求header/pagam参数)
    多线程执行sql报错处理
    jmeter配置分布式调度:远程启动其他机器实现多台pc一起并发
    5. openCV中常用函数学习
  • 原文地址:https://www.cnblogs.com/suiyun/p/2872193.html
Copyright © 2011-2022 走看看