00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "eg_elist.h"
00026
00027
00028 typedef struct
00029 {
00030 int n;
00031 EGeList_t cn;
00032 }
00033 integer_list_t;
00034
00035
00036
00037
00038
00039
00040 int main (void)
00041 {
00042 int rval = 0;
00043 integer_list_t number[20],
00044 *n_ptr;
00045 EGeList_t head,
00046 back_up,
00047 *it,
00048 *itn;
00049 int i;
00050
00051
00052 EGeListInit (&head);
00053 EGeListInit (&back_up);
00054
00055 if (EGeListIsEmpty (&head))
00056 fprintf (stderr, "List is empty at beginning\n");
00057
00058 for (i = 0; i < 20; i++)
00059 {
00060 number[i].n = random () % 500;
00061 EGeListAddBefore (&(number[i].cn), &head);
00062 }
00063
00064 fprintf (stderr, "Numbers in the list:\n");
00065 for (it = head.next, i = 0; it != &head; it = it->next, i++)
00066 {
00067 n_ptr = EGcontainerOf (it, integer_list_t, cn);
00068 fprintf (stderr, "(%d,%d) ", n_ptr->n, number[i].n);
00069 }
00070 fprintf (stderr, "\n");
00071
00072
00073 fprintf (stderr, "Eliminating values:\n");
00074 for (i = 0; i < 10; i++)
00075 {
00076 it = EGeListDel (&(number[i << 1].cn));
00077 n_ptr = EGcontainerOf (it, integer_list_t, cn);
00078 fprintf (stderr, "%d ", n_ptr->n);
00079 }
00080 fprintf (stderr, "\n");
00081
00082 fprintf (stderr, "Numbers in the list:\n");
00083 for (it = head.next, i = 0; it != &head; it = it->next, i++)
00084 {
00085 n_ptr = EGcontainerOf (it, integer_list_t, cn);
00086 fprintf (stderr, "(%d,%d) ", n_ptr->n, number[(i << 1) + 1].n);
00087 }
00088 fprintf (stderr, "\n");
00089
00090
00091
00092
00093 for (it = head.next, i = 0; it != &head; i++)
00094 {
00095 itn = it->next;
00096 if (i % 2 == 0)
00097 EGeListMoveBefore (it, &back_up);
00098 it = itn;
00099 }
00100
00101 fprintf (stderr, "head: ");
00102 for (it = head.next; it != &head; it = it->next)
00103 {
00104 n_ptr = EGcontainerOf (it, integer_list_t, cn);
00105 fprintf (stderr, "%d ", n_ptr->n);
00106 }
00107 fprintf (stderr, "\nback_up: ");
00108 for (it = back_up.next; it != &back_up; it = it->next)
00109 {
00110 n_ptr = EGcontainerOf (it, integer_list_t, cn);
00111 fprintf (stderr, "%d ", n_ptr->n);
00112 }
00113 fprintf (stderr, "\n");
00114
00115 EGeListSplice (&head, &back_up);
00116 EGeListInit (&head);
00117
00118 fprintf (stderr, "head: ");
00119 for (it = head.next; it != &head; it = it->next)
00120 {
00121 n_ptr = EGcontainerOf (it, integer_list_t, cn);
00122 fprintf (stderr, "%d ", n_ptr->n);
00123 }
00124 fprintf (stderr, "\nback_up: ");
00125 for (it = back_up.next; it != &back_up; it = it->next)
00126 {
00127 n_ptr = EGcontainerOf (it, integer_list_t, cn);
00128 fprintf (stderr, "%d ", n_ptr->n);
00129 }
00130 fprintf (stderr, "\n");
00131
00132
00133 EGeListReplace (back_up.next, &(number[0].cn));
00134 fprintf (stderr, "back_up: ");
00135 for (it = back_up.next; it != &back_up; it = it->next)
00136 {
00137 n_ptr = EGcontainerOf (it, integer_list_t, cn);
00138 fprintf (stderr, "%d ", n_ptr->n);
00139 }
00140 fprintf (stderr, "\n");
00141 return rval;
00142 }
00143
00144
00145