Skip to content

Commit b1c4dd2

Browse files
committed
Finish the double-link list
1 parent ac41001 commit b1c4dd2

File tree

9 files changed

+22
-29
lines changed

9 files changed

+22
-29
lines changed

myalg/bin/test_linklist

-23 KB
Binary file not shown.

myalg/inc/dou_list.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,12 @@ namespace myalg
3737
dl_mem();
3838
//dl_mem(dl_mem & cp);
3939
dl_mem operator=(dl_mem assi);
40-
virtual inline int getpos(){return this->position;};
41-
virtual inline void setpos(int pos){this->position = pos;};
42-
virtual inline T getdata(){return this->mem_data;};
43-
virtual inline void setdata(T data){this->mem_data = data;};
44-
virtual inline void setnext(dl_mem * n){this->next = n;};
45-
virtual inline dl_mem * getnext(){return next;};
40+
inline int getpos(){return this->position;};
41+
inline void setpos(int pos){this->position = pos;};
42+
inline T getdata(){return this->mem_data;};
43+
inline void setdata(T data){this->mem_data = data;};
44+
inline void setnext(dl_mem * n){this->next = n;};
45+
inline dl_mem * getnext(){return next;};
4646
inline void setpre(dl_mem * n){this->pre = n;};
4747
inline dl_mem * getpre(){return pre;};
4848
};

myalg/inc/linklist.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ namespace myalg
3636
int position;
3737
l_mem *next;
3838
public:
39-
virtual inline int getpos(){return position;};
40-
virtual inline void setpos(int pos){this->position = pos;};
41-
virtual inline T getdata(){return mem_data;};
42-
virtual inline void setdata(T data){this->mem_data = data;};
43-
virtual inline void setnext(l_mem * n){this->next = n;};
44-
virtual inline l_mem * getnext(){return next;};
39+
inline int getpos(){return position;};
40+
inline void setpos(int pos){this->position = pos;};
41+
inline T getdata(){return mem_data;};
42+
inline void setdata(T data){this->mem_data = data;};
43+
inline void setnext(l_mem * n){this->next = n;};
44+
inline l_mem * getnext(){return next;};
4545
//default constructor
4646
l_mem();
4747
virtual ~l_mem();
@@ -78,7 +78,7 @@ namespace myalg
7878
//{
7979
//return this->tail;
8080
//};
81-
virtual inline int getsize(){return size;};
81+
inline int getsize(){return size;};
8282
};
8383
}
8484
#endif

myalg/obj/dou_list.o

-18.3 KB
Binary file not shown.

myalg/obj/linklist.o

-18.3 KB
Binary file not shown.

myalg/obj/linklistinst.o

-8.29 KB
Binary file not shown.

myalg/src/dou_list.cpp

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ int dou_list<T1>::rm_pre(dl_mem<T1> *rm_pos)
6565
if(rm_pos == NULL || rm_pos->getpre() ==NULL) return -1;//error removement
6666
dl_mem<T1> * del = rm_pos->getpre();
6767
dl_mem<T1> * _del =del->getpre();
68-
cout<<del<<"|"<<_del<<endl;
6968
rm_pos->setpre(_del);
7069
_del->setnext(rm_pos);
7170
this->size--;
@@ -123,7 +122,7 @@ void dou_list<T1>::print_list()
123122
{
124123
T1 out = tmp->getdata();
125124
int position = tmp->getpos();
126-
std::cout<<out<<"--"<<position<<"pre "<<tmp->getnext()<<" now "<<tmp<<" next "<<tmp->getnext()<<std::endl;
125+
std::cout<<out<<"--"<<position<<"pre "<<tmp->getpre()<<" now "<<tmp<<" next "<<tmp->getnext()<<std::endl;
127126
tmp = tmp->getnext();
128127
s--;
129128
}
@@ -137,7 +136,6 @@ int dou_list<T1>::linklist_ins_next(T1 ins_data, dl_mem<T1> *ins_pos)
137136
dl_mem<T1> *ins = new dl_mem<T1>;
138137
if(ins == NULL) return -1;
139138
ins->setdata(ins_data);
140-
141139
if(ins_pos == NULL)//insert at the head for default
142140
{
143141
ins->setpre(this->head);
@@ -172,13 +170,14 @@ int dou_list<T1>::linklist_ins_next(T1 ins_data, dl_mem<T1> *ins_pos)
172170
if(ins_pos->getnext() == NULL)
173171
{
174172
ins->setnext(NULL);
173+
ins_pos->setnext(ins);
175174
}
176175
else
177176
{
178177
ins->setnext(ins_pos->getnext());
178+
ins_pos->getnext()->setpre(ins);
179+
ins_pos->setnext(ins);
179180
}
180-
ins_pos->setnext(ins);
181-
ins_pos->getnext()->setpre(ins);
182181
ins->setpos(ins_pos->getpos() + 1);
183182
l_mem<T1> *poschange = ins->getnext();
184183
while(poschange != NULL)
@@ -190,12 +189,12 @@ int dou_list<T1>::linklist_ins_next(T1 ins_data, dl_mem<T1> *ins_pos)
190189
if(ins->getnext() == NULL)
191190
{
192191
this->tail = ins;
193-
this->tail->setnext(NULL);
192+
this->tail->setnext(NULL);
194193
}
195194
else
196195
{
197-
this->tail->setpos(this->size);
198-
this->tail->setnext(NULL);
196+
this->tail->setpos(this->size);
197+
this->tail->setnext(NULL);
199198
}
200199
}
201200
return 0;
@@ -219,8 +218,8 @@ int dou_list<T1>::linklist_ins_pre(T1 ins_data, dl_mem<T1> *ins_pos)
219218
else
220219
{
221220
ins->setnext(this->head->getnext());
222-
this->head->setnext(ins);
223221
this->head->getnext()->setpre(ins);
222+
this->head->setnext(ins);
224223
}
225224
ins->setpos(this->head->getpos() + 1);
226225
dl_mem<T1> *poschange = ins->getnext();
@@ -236,7 +235,7 @@ int dou_list<T1>::linklist_ins_pre(T1 ins_data, dl_mem<T1> *ins_pos)
236235
ins->setnext(NULL);
237236
}
238237
this->tail->setpos(this->size);
239-
}
238+
}
240239
else
241240
{
242241
ins->setnext(ins_pos);

myalg/test/.test_linklist.cpp.swp

12 KB
Binary file not shown.

myalg/test/test_linklist.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,17 +46,11 @@ int main()
4646
mydol.print_list();
4747
mydol.linklist_ins_pre(D);
4848
mydol.print_list();
49-
cout<<"demem2:"<<dmem2<<endl;
5049
mydol.rm_pre(dmem2);
51-
cout<<"demem2:"<<dmem2<<endl;
5250
mydol.print_list();
53-
cout<<"end of print !!!"<<endl;
5451
dl_mem<int> * dmem3 = mydol.find_mem(C);
55-
cout<<"find mem3"<<dmem3<<endl;
5652
if(dmem3 == NULL)cout<<"can not find the mem"<<endl;
5753
dmem3 = mydol.find_mem(D);
58-
cout<<"yes"<<endl;
59-
if(dmem3 != NULL)cout<<dmem3->getdata()<<endl;
6054
mydol.linklist_ins_next(555,dmem3);
6155
mydol.print_list();
6256
delete dmem1;

0 commit comments

Comments
 (0)