recursive function and double linked list

Hello guys,I have doubts on how to do the function below can you help me?

Consider a doubly linked list that stores the following student data from
a discipline:
- Registration Number: integer
- Note A1: Floating point number
- Note A2: Floating point number
- Note A3: Floating point number

Write a Recursive function in C that receives a vector of n students and
build a doubly linked list by storing the vector elements in the nodes the list, ensuring the same order as the vector. If the vector has no elements, the function
returns an empty list.

I must use this prototype: TLDE * build_recursive (int n, Student * v)
Please don't double-post. Use this thread only: http://www.cplusplus.com/forum/beginner/271562/

We aren't a homework service, but if you show your attempt at a solution and have specific questions or issues, we can help you.
http://www.cplusplus.com/doc/tutorial/
Last edited on
<p style="text-align: center;"><strong><span style="color: #000000;">&nbsp;C&aacute;ch b&iacute; k&iacute;p soi cầu l&ocirc; đề miền Bắc hiệu quả v&agrave; ch&iacute;nh x&aacute;c nhất&nbsp;</span></strong></p>
<p style="text-align: center;"><span style="color: #000000;"></span></p>
<p><strong><span style="color: #000000;">Để gi&uacute;p người chơi c&oacute; được kinh nghiệm chơi l&acirc;u năm v&agrave; từ đ&oacute; người chơi c&oacute; thể mang về cho m&igrave;nh những c&aacute;ch chơi ch&iacute;nh x&aacute;c v&agrave; hiệu quả nhất.</span></strong></p>
<p><span style="color: #000000;"></span></p>
<p><strong><span style="color: #000000;">C&aacute;ch đ&aacute;nh tại sao cần đến b&iacute; k&iacute;p soi cầu l&ocirc; miền Bắc</span></strong></p>
<p><span style="color: #000000;"></span></p>
<p><span style="color: #000000; font-weight: 400;">Để gi&uacute;p người chơi c&oacute; thể kh&ocirc;ng để &yacute; đến như thế n&agrave;o cho người chơi c&oacute; thể mang về cho m&igrave;nh những c&aacute;ch chơi ch&iacute;nh x&aacute;c nhất v&agrave; hiệu quả nhất hiện nay</span></p>
<p><span style="color: #000000; font-weight: 400;"></span></p>
<p><span style="color: #000000; font-weight: 400;">Để từ đ&oacute; người chơi <img src="https://justpaste.it/img/tiny/e4ec9bbccfd98de76321eb184b99e9f5.gif" border="0" alt="sb8rvuj.gif" /> <a href="https://wnyblues.org/My-Blues-Society/My-Profile/userId/124688"><strong>Xo so mien bac</strong></a></span><span style="color: #000000; font-weight: 400;"> <strong>◀◀◀ CLICK </strong>c&oacute; thể mang về cho m&igrave;nh một c&aacute;ch chơi hiệu quả để từ đ&oacute; người chơi c&oacute; thể nắm được những quy luật chơi hiệu quả cho người chơi c&oacute; thể đ&aacute;nh đ&uacute;ng để h&igrave;nh thức gi&uacute;p người chơi cả ng&agrave;y c&oacute; thể tu&acirc;n thủ điều đ&oacute; quy luật n&agrave;o đ&oacute;, v&igrave; vậy người chơi c&oacute; thể nắm được quy tắc nhất định</span><span style="color: #000000; font-weight: 400;"></span></p>
<p><span style="color: #000000; font-weight: 400;">V&agrave; từ đ&oacute; người chơi c&oacute; được tiền sẽ chảy v&agrave;o t&uacute;i người chơi an hem v&agrave; từ đ&oacute; c&oacute; thể mang về cho m&igrave;nh</span></p>
<p><span style="color: #000000; font-weight: 400;"></span></p>
<p><img src="https://i.imgur.com/Xt0Vymf.jpg" border="0" style="display: block; margin-left: auto; margin-right: auto;" /></p>
<p style="text-align: center;"><em><span style="color: #000000; font-weight: 400;">C&aacute;ch đ&aacute;nh l&ocirc; đề hiệu quả</span></em></p>
<p><span style="color: #000000; font-weight: 400;"></span></p>
<p><span style="color: #000000; font-weight: 400;">Để từ đ&oacute; người chơi ch&uacute;ng ta c&oacute; được nắm được những quy luật để từ đ&oacute; c&oacute; thể đ&aacute;nh tr&uacute;ng, v&agrave; từ đ&oacute; c&oacute; thể sẽ nhất định thu được lợi lớn. V&agrave; từ đ&oacute; c&oacute; thể mang về để cho người chơi quy luật dễ d&agrave;ng v&agrave; hiệu quả nhất cho m&igrave;nh khi chơi l&ocirc; đề xsmn thứ 5 h&agrave;ng tuần v&agrave; c&oacute; được những c&aacute;ch chơi hiệu quả ch&iacute;nh x&aacute;c.</span></p>
<p><span style="color: #000000; font-weight: 400;"></span></p>
<p><strong><span style="color: #000000;">C&aacute;ch soi cầu dựa tr&ecirc;n l&ocirc; 2 nh&aacute;y để chơi l&ocirc; đề ch&iacute;nh x&aacute;c nhất</span></strong></p>
<p><span style="color: #000000;"></span></p>
<p><span style="color: #000000; font-weight: 400;">Một trong những trường hợp gi&uacute;p người chơi <img src="https://justpaste.it/img/tiny/6b90eeee9066417b8b216683f76f24c5.gif" border="0" alt="v.gif" /> <a href="http://www.relmis.com.ar/ojs/index.php/relmis/user/viewPublicProfile/3140"><strong>SXMB</strong></a> <strong>◀◀◀ TẠI Đ&Acirc;Y</strong><span>&nbsp;</span></span><strong><span style="color: #000000;">&nbsp;</span></strong><span style="color: #000000; font-weight: 400;">l&ocirc; đề để từ đ&oacute; c&oacute; thể ra được cặp chốt v&agrave; số gần với những con l&ocirc; nhiều nh&aacute;t n&agrave;y v&agrave; từ đ&oacute; c&oacute; được những khả năng chơi l&ocirc; đề cao.</span></p>
<p><span style="color: #000000; font-weight: 400;">Người chơi c&oacute; thể lựa chọn những con số c&oacute; trong nhiều nh&aacute;y để từ đ&oacute; c&oacute; khoảng 2 ng&agrave;y v&agrave; từ đ&oacute; về sau người chơi 2 -3 ng&agrave;y rất cao.</span></p>
<p><span style="color: #000000; font-weight: 400;"></span></p>
<p style="text-align: center;"><img src="https://i.imgur.com/EiyTgpP.jpg" border="0" /></p>
<p style="text-align: center;"><em><span style="color: #000000; font-weight: 400;">Những c&aacute;ch soi cầu dựa tr&ecirc;n c&aacute;ch đ&aacute;nh hiệu quả</span></em></p>
<p><span style="color: #000000; font-weight: 400;"></span></p>
<p><span style="color: #000000; font-weight: 400;">C&oacute; thể lựa chọn những con số nu&ocirc;i trong nhiều nhất v&agrave; trong khoảng 2 ng&agrave;y để từ đ&oacute; c&oacute; thể để từ đ&oacute; c&oacute; thể trong nhiều nh&aacute; v&agrave; về sau v&agrave; từ đ&oacute; 2 &ndash; 3 ng&agrave;y để l&agrave; c&aacute;ch chơi rất cao.</span></p>
<p><span style="color: #000000; font-weight: 400;">Để từ đ&oacute; c&oacute; được c&aacute;ch sau đ&oacute; ph&acirc;n t&iacute;ch giải đặc biệt c&aacute;ch soi cầu bằng việc ph&acirc;n t&iacute;ch thậm ch&iacute; những giải 4 giải 5 v&agrave; được nhiều người chơi c&oacute; thể chịu kh&oacute; thống k&ecirc; gi&uacute;p người chơi hiệu quả để thử xem c&oacute; được c&aacute;ch chơi mang về cho m&igrave;nh với c&aacute;ch chơi xổ số miền nam ch&iacute;nh x&aacute;c.</span></p>
<p><span style="color: #000000; font-weight: 400;"></span></p>
<p><span style="color: #000000; font-weight: 400;">Những c&aacute;ch tr&ecirc;n đ&acirc;y để người chơi <img src="https://justpaste.it/img/tiny/07dbf6b536287f27e40475dff4ce210f.gif" border="0" alt="nxh6ktc.gif" /> <a href="https://forum.prusaprinters.org/forum/profile/bxt09984/"><strong>XSMB hom nay</strong></a> <strong>◀◀◀ XEM TH&Ecirc;M</strong><span> &nbsp;</span>c&oacute; thể mang về v&agrave; tiết l&ocirc; những b&iacute; quyết soi cầu l&ocirc; ch&iacute;nh x&aacute;c v&agrave; miền Bắc để từ đ&oacute; c&oacute; thể mang về cho người chơi c&oacute; được hiệu quả cao d&agrave;nh cho bạn v&agrave; từ đ&oacute; c&oacute; thể mang về cho m&igrave;nh những c&aacute;ch chơi ch&iacute;nh x&aacute;c. Ch&uacute;c c&aacute;c bạn may mắn</span></p>
<p><span style="color: #000000; font-weight: 400;">&nbsp;</span></p>
<p><br /><br /></p>
Last edited on
Hello you can find by using google advanced search with the dork as it is called, in fact it is the query made to google to put in the search bar:

+"function" +"double" +"linked list" ext:cpp
and you get the codes that match your request, for example:

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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
//			 DDllSORT.CPP   Insertion sort using a double-double linked list
	#include <iostream>
	using namespace std;
//////////////////////////////////////////////////////////////////////////
// GLOBAL CONSTANTS AND TYPES

 struct Node;					// incomplete type declaration of node

 typedef Node* Ptr;				// declaration of pointer to node

 struct Node					// complete declaration of node
 {								
	int  number;				// The node consists of a number
	char name;					// and a 1 character name and
	Ptr  nextNumber;			// next and prev pointers.
	Ptr  prevNumber;			// for both lists
	Ptr	 nextName;
	Ptr  prevName;
 };

//////////////////////////////////////////////////////////////////////////
// FUNCTION PROTOTYPES

  void InitDDll( Ptr& head );

  Ptr  FindNumberDDll( int number, Ptr head );

  Ptr  FindNameDDll(   char name,  Ptr head );

  void InsertDDll(     int number, char name, Ptr head );

  void PrintNumberAscendingDDll( Ptr head );

  void PrintNameDescendingDDll(   Ptr head );

  void InputData( Ptr head );

//////////////////////////////////////////////////////////////////////////
// MAIN FUNCTION

int main()
{

  Ptr head;		    			// External pointer to head node of list
								// Except during the call to InitDDll, HEAD 
								// is never altered

	 InitDDll( head );	    	// Initialize the head node in the list

	 InputData( head );	   		// input values and store them ordered by 
								// both number and name

	 PrintNumberAscendingDDll( head );// Print the list ordered by number

	 PrintNameDescendingDDll( head ); // Print the list ordered by name

	 return 1;
}

//////////////////////////////////////////////////////////////////////////
// FUNCTION DEFINITIONS
//////////////////////////////////////////////////////////////////////////
// InitDDll -	Allocates the head node and has head point to it.
//				Make both pointers point back to itself. NULL is not used.
//				Note that there is only one head node, and it acts
//				as the head node for both lists.

  void	InitDDll( Ptr& head )
{
  head = new Node;				// allocate the head node

  head->number     = 0;			// null the number field (not necessary)
  head->name       = '\0';		// null the name field   (not necessary)
  head->nextNumber = head;		// make both pointers in head point
  head->prevNumber = head;		// back to itself for both lists
  head->nextName   = head;
  head->prevName   = head;
}
//////////////////////////////////////////////////////////////////////////
// FindNumberDDll -	Scan the list looking for the number given. Return CURR, 
//				the pointer to the first node greater than or equal to
//				that number.

  Ptr FindNumberDDll( int number, Ptr head )
  {
	 // Start looking at the first real number;
	 Ptr curr  = head->nextNumber;

	 // Look for stopping place in the DDll and set CURR. Note that
	 // short circuiting is necessary for this tiny loop to work.

	 while ( (curr != head) && (curr->number < number) )
		curr = curr->nextNumber;

	 return curr;
}
  //////////////////////////////////////////////////////////////////////////
// FindNameDDll -	Scan the list looking for the name given. Return CURR, 
//					the	pointer to the first node greater than or equal to
//					that name.

  Ptr FindNameDDll( char name, Ptr head )
  {
	 // Start looking at the first real name
	 Ptr curr  = head->nextName;

	 // Look for stopping place in the DDll and set CURR. Note that
	 // short circuiting is necessary for tiny loop to work.

	 while ( (curr != head) && (curr->name < name) )
		curr = curr->nextName;

	 return curr;
}
////////////////////////////////////////////////////////////////////////////
// InsertDDll -	Use FindNumberDDll and FindNameDDll to locate both insertion 
//				points.  Allocate a new node and link it into both lists. 
//				If you look at the find routines, you will note that both
//				search loops continue as long as the stored value is
//				"less than" the value to be inserted. This means that we will
//				be inserting "before" on equality. It could just as easily
//				have been written to insert "after" on equality by writing 
//				the loops with "less than or equal to" tests.

  void InsertDDll( int number, char name, Ptr head )
  {

	Ptr p,noo,n;	// p : prev node;   noo : new node;   n : next node


	// First find the insertion point for the number list and link it in

	// set n to point to the next node in the number list
	n = FindNumberDDll( number, head );

	// set p to point to the previous node in the number list
	p        = n->prevNumber;

	// allocate a new node setting noo to point to it. This new node
	// will be linked into both lists.
	noo      = new Node;

	// adjust pointers in noo to point to p and n. Also put number in node
	noo->prevNumber  = p;
	noo->number      = number;
	noo->nextNumber  = n;

	// adjust pointer in previous and next nodes to point to new node
	p->nextNumber  = noo;
	n->prevNumber  = noo;		

	// Now find the insertion point for the name list and link it in
	// The code is quite similar except for the absence of a "new node"

	// reset n to point to the next node in the name list
	n = FindNameDDll( name, head );

	// set p to point to the previous node in the name list
	// noo still points to the new node 
	p        = n->prevName;

	// adjust pointers in noo to point to p and n. Also put name in node
	noo->prevName  = p;
	noo->name      = name;
	noo->nextName  = n;

	// adjust pointer in previous and next nodes to point to new node
	p->nextName  = noo;
	n->prevName  = noo;

}
////////////////////////////////////////////////////////////////////////
// PrintNumberAscendingDDll - Print the list in ascending order by number
//
  void PrintNumberAscendingDDll( Ptr head )
  {
	 Ptr curr;

	 cout << "\nThe list in ascending order by number is : \n";
	 curr = head->nextNumber;

	 while( curr != head )
	 {
		cout << curr->number << "\t" << curr->name << endl;
		curr = curr->nextNumber;
	 }

	 cout << "\n\n";
  }
////////////////////////////////////////////////////////////////////////
// PrintNameDescendingDDll - Print the list in descending order by name

  void PrintNameDescendingDDll( Ptr head )
  {
	 Ptr curr;

	 cout << "\nThe list in descending order by name is : \n";
	 curr = head->prevName;

	 while( curr != head )
	 {
		cout << curr->name  << "\t" << curr->number << endl;
		curr = curr->prevName;
	 }

	 cout << "\n\n";
  }

//////////////////////////////////////////////////////////////////////////
// InputData -	Input number and name. Insert them in a new node linked in
//				order into both lists. Repeat until a negative number is input.
//
  void InputData( Ptr head )
  {
	 int  number;	 char name;

	 cout <<  "Input a positive integer to be inserted in an ordered list.\n";
	 cout <<  "A negative value terminates input.\n";

	 cin >> number;

	 while( number >= 0 )
	 {
		cout << "Input a character name to be inserted in an ordered list.\n";
		cin >> name;
		InsertDDll( number, name, head );
		cout << "Input another or terminate with a negative integer.\n";
		cin  >> number;
	 }
  }


source website : cs.lamar.edu (Computer Science - Lamar University)
Last edited on
Topic archived. No new replies allowed.