# include <iostream>
using namespace std; typedef int Elemtype; # define Maxsize 100
# define ERROR 0
# define OK 1 typedef struct LNode
{ Elemtype data; struct LNode * next;
} LNode, * LinkList; bool InitList ( LinkList& L)
{ L = ( LinkList) malloc ( sizeof ( LNode) ) ; if ( L == NULL ) return ERROR; L-> data = 0 ; L-> next = NULL ; return OK;
} bool ListEmpty ( LinkList L)
{ if ( L-> next != NULL ) { cout << "not empty" << endl; return OK; } else { cout << "empty,只有头节点" << endl; return ERROR; }
} int ListLength ( LinkList L)
{ LNode* p; p = L-> next; int i = 0 ; while ( p != NULL ) { p = p-> next; i++ ; } return i;
} LinkList List_HeadInsert ( LinkList& L)
{ L = ( LinkList) malloc ( sizeof ( LNode) ) ; L-> data = 0 ; L-> next = NULL ; LNode* s = NULL ; int x = 0 ; while ( cin >> x) { s = ( LinkList) malloc ( sizeof ( LNode) ) ; s-> data = x; s-> next = L-> next; L-> next = s; if ( cin. get ( ) == '\n' ) break ; } return L;
} LinkList List_TailInsert ( LinkList& L)
{ L = ( LinkList) malloc ( sizeof ( LNode) ) ; L-> data = 0 ; L-> next = NULL ; LNode* s = NULL , * r = NULL ; r = L; int x = 0 ; while ( cin >> x) { s = ( LinkList) malloc ( sizeof ( LNode) ) ; s-> data = x; r-> next = s; r = s; if ( cin. get ( ) == '\n' ) break ; } s-> next = NULL ; return L;
}
LNode* GetElem ( LinkList L, int i)
{ if ( i < 0 ) return NULL ; int j = 0 ; LNode* p = L; while ( p && j < i) { p = p-> next; j++ ; } return p;
}
LNode* LocateElem ( LinkList L, int e)
{ LNode* p = L-> next; while ( p && p-> data != e) { p = p-> next; } return p;
} bool InsertPriorNode ( LNode* p, int e)
{ if ( p == NULL ) return ERROR; LNode* s = ( LinkList) malloc ( sizeof ( LNode) ) ; if ( s == NULL ) return ERROR; s-> next = p-> next; p-> next = s; s-> data = p-> data; p-> data = e; return OK;
}
bool InsertNextNode ( LNode* p, int e)
{ if ( p == NULL ) return ERROR; LNode* s = ( LinkList) malloc ( sizeof ( LNode) ) ; if ( s == NULL ) return ERROR; s-> next = p-> next; p-> next = s; s-> data = e; return OK;
}
int main ( void )
{ LinkList L = NULL ; List_TailInsert ( L) ; cout << "------------------插入特定数据前------------------" << endl; cout << L << " " << L-> data << " " << L-> next << endl; cout << L-> next << " " << L-> next-> data << " " << L-> next-> next << endl; cout << L-> next-> next << " " << L-> next-> next-> data << " " << L-> next-> next-> next << endl; InsertNextNode ( L-> next, 100 ) ; cout << "------------------插入特定数据后------------------" << endl; cout << L << " " << L-> data << " " << L-> next << endl; cout << L-> next << " " << L-> next-> data << " " << L-> next-> next << endl; cout << L-> next-> next << " " << L-> next-> next-> data << " " << L-> next-> next-> next << endl; cout << L-> next-> next-> next << " " << L-> next-> next-> next-> data << " " << L-> next-> next-> next-> next << endl; return 0 ;
}