
代码鲁棒性较差,之后补充注释以及减少BUG增加可读性。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
|
#include <vector> #include <cstring> #include <malloc.h> using namespace std ; typedef struct { int data ; struct *next ; }node , *Lnode ; int Linklist_length( node *head ){ node *p = (node*)malloc(sizeof(node)) ; int len = 0 ; while ( p ){ p = p->next ; len ++ ; } return len ; } Lnode Link_reverse_head( node *head ){ node *p = head->next ; head->next = NULL ; node *q ; while ( p ){ q = p ; p = p->next ; q->next = head->next ; head->next = q ; } return head ; } Lnode Linklist_insert( int pos , int num , node *head ){ node *index = head ; for ( int i = 0 ; i < pos ; i ++ ){ index = index->next ; } node *p = (node*)malloc(sizeof(node)) ; p->data = num ; p->next = index->next ; index->next = p ; return head ; } Lnode Linklist_delete( int pos , node *head ){ node *index = head ; for ( int i = 1 ; i < pos ; i ++ ){ index = index->next ; } node *p = index->next ; index->next = p->next ; p->next = NULL ; free( p ) ; return head ; } Lnode Creat_from_head( int count ){ node *head = (node*)malloc(sizeof(node)) ; head->next = NULL ; int num ; while ( count -- && cin >> num ){ node *p = (node*)malloc(sizeof(node)) ; p->data = num ; p->next = head->next ; head->next = p ; } return head ; } Lnode Creat_from_last( int count ){ node *head = (node*)malloc(sizeof(node)) ; head->next = NULL ; int num ; node *index = head ; while ( count -- && cin >> num ){ node *p = (node*)malloc(sizeof(node)) ; p->data = num ; index->next = p ; index = p ; } index->next = NULL ; return head ; } void output( node *head ){ node *p = head->next ; while ( p ){ cout << p->data << " " ; p = p->next ; } cout << endl ; return ; } int main(){ int num ; cin >> num ; node *index_creat = Creat_from_last( num ) ; output( index_creat ) ; int pos , number ; cin >> pos >> number ; node *index_insert = Linklist_insert( pos , number , index_creat ) ; output( index_insert ) ; cin >> pos ; node *index_delete = Linklist_delete( pos , index_creat ) ; output( index_delete ) ;
node *index_reverse = Link_reverse_head( index_creat ) ; output( index_reverse ) ; return 0 ; }
|
近期评论