zoukankan      html  css  js  c++  java
  • 单链表(C++实现)

    使用C++语言实现单链表的创建、查找、删除、插入等功能

      1 #include <iostream>
      2 using namespace std ;
      3 
      4 #define ERROR -1
      5 #define CORRECT 1
      6 
      7 //定义
      8 struct LNode {
      9     int data ;
     10     LNode *next ;
     11 } ;
     12 LNode *LinkList ;
     13 
     14 //查找
     15 LNode *SearchLinkList (LNode *L , int i)
     16 {
     17     int j ;
     18     LNode *p ;
     19 
     20     p = L ;
     21     j = 1 ;
     22     while (p &&j < i)
     23     {
     24         p = p -> next ;
     25         j++ ;
     26     }
     27     if (!p || j>i)
     28     {
     29         return (p) ;
     30     }
     31 }
     32 
     33 //插入
     34 int InsertLinkList (LNode *L , int e , int i)
     35 {
     36     //在链表L中第i个位置插入元素e
     37     LNode *p , *s ;
     38     p = SearchLinkList (L , i-1) ;
     39     if (!p) 
     40     {
     41         return (ERROR) ;
     42     }
     43     s = new LNode ;
     44     //节点插入L中
     45     s -> data = e ;
     46     s -> next = p -> next ;
     47     p -> next = s ;
     48 
     49     return (CORRECT) ;
     50 }
     51 
     52 //表单创建
     53 LNode *CreateLinkList (int *r , int n)
     54 {
     55     int j ;
     56     LNode *L , *p , *s ;
     57 
     58     if (n <= 0)
     59     {
     60         return (NULL) ;
     61     }
     62     s = new LNode ;
     63     s -> data = r[1] ;
     64     s -> next = NULL ;
     65     L = s ;
     66     p = L ;
     67     for (j = 2 ; j <= n ; j++)
     68     {
     69         /*
     70         s = new LNode ;
     71         s -> data = r[j] ;
     72         s -> next = NULL ;
     73         p -> next = s;
     74         p = s ;
     75         */
     76 
     77         InsertLinkList (L , r[j] , j) ;
     78     }
     79     return (L) ;
     80 }
     81 
     82 //删除
     83 int DeleteLinkList (LNode *L , int i)
     84 {
     85     //在表中删除第i个位置
     86     int e ;
     87     LNode *p , *q ;
     88 
     89     p = SearchLinkList (L , i-1) ;
     90     if (!p)
     91     {
     92         return (ERROR) ;
     93     }
     94     q = p -> next ;
     95     p -> next = p -> next -> next ;    //不可用q,因为q是用来指示将要删除的内存
     96     e = q -> data ;
     97     delete (q) ;
     98 
     99     return (e) ;
    100 }
    101 
    102 //结果输出
    103 int ShowLinkList (LNode *L)
    104 {
    105     LNode *p ;
    106 
    107     if (!L)
    108     {
    109         return (ERROR) ;
    110     }
    111     p = L ;
    112     while (p -> next)
    113     {
    114         cout << p -> data <<" " ;
    115         p = p -> next ;
    116     }
    117     cout << p -> data << endl ;
    118     return (CORRECT) ;
    119 }
    120 
    121 int main (int argc , char * argv[])
    122 {
    123     int r[100] , i ,SampleNum , SearchPos , NewPos , NewItem , DelPos ;
    124     LNode *p ;
    125 
    126     cin >> SampleNum ;
    127     for (i = 1 ; i <= SampleNum ; i++)
    128     {
    129         cin >> r[i] ;
    130     }
    131     LinkList = CreateLinkList (r , SampleNum) ;
    132     ShowLinkList (LinkList) ;
    133 
    134     cin >> SearchPos ;
    135     p = SearchLinkList (LinkList , SearchPos) ;
    136     cout << p -> data << endl ;
    137 
    138     cin >> NewPos ; 
    139     cin >> NewItem ;
    140     InsertLinkList (LinkList , NewItem , NewPos) ;
    141     ShowLinkList (LinkList) ;
    142 
    143     cin >> DelPos ;
    144     DeleteLinkList (LinkList , DelPos) ;
    145     ShowLinkList (LinkList) ;
    146 
    147     return 0;
    148 }

  • 相关阅读:
    个人项目博客
    个人博客作业
    软件工程 热身作业
    OO第四次博客作业--第四单元总结及课程总结
    OO第三次博客作业--第三单元总结
    OO第二次博客作业--第二单元总结
    OO第一次博客作业--第一单元总结
    【杂谈】研究生最后一年学习计划
    【记录】一些非常方便的命令集合
    【Git】基本命令使用
  • 原文地址:https://www.cnblogs.com/maoguy/p/5943175.html
Copyright © 2011-2022 走看看