|
C-/C++-Quelltext
|
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
|
// Sortieren
// Simon Klausner, Manuel Unterberger, Maximilian Gerhardt, Manuel Willard
// purpose : - define list
// - define list functions (add, find, delete)
#include <stdio.h>
// Struct List
struct List
{
int iNumber; // number
char cChar; // character
struct List *next; // pointer on the next element of the list
};
void CreateElement(int iNumber, char cChar, struct List **base); // Creates Element in list
void DeleteElement(int iNumber, struct List **base); // Deletes Element
void Output(struct List *base); // Output function
// main function
// purpose : - Create a list
// - Call all functions
int main ()
{
// Variables
struct List *base=NULL; // pointer on the first element of the list
CreateElement(8, 'h', &base);
DeleteElement(8, &base);
Output(base);
return 0;
} // end main
// Create Element
// purpose : - create a element in the list
void CreateElement(int iNumber, char cChar, struct List **base)
{
// Variables
struct List *ptr=NULL;
ptr = *base;
if (ptr == NULL)
{
// Create first element of list
ptr = (struct List *) malloc(sizeof(struct List));
*base = ptr;
}
else
{
// Create more elements
// Search end of list
while (ptr->next != NULL) ptr = ptr->next;
// Create new element
ptr->next = (struct List*) malloc(sizeof(struct List));
ptr = ptr->next;
}
ptr->iNumber = iNumber;
ptr->cChar = cChar;
ptr->next = NULL;
} // end Create Element
// Delete Element
// purpose : - delete element in the list
void DeleteElement(int iNumber, struct List **base)
{
struct List *ptr=NULL, *ptrNext=NULL;
assert(*base != NULL);
if ((*base)->iNumber == iNumber)
{
// First element of list will be removed
ptr = (*base)->next;
free(*base);
*base = ptr;
}
else
{
ptr = *base;
// Search for elements which will be deleted
while (ptr->next != NULL)
{
ptrNext = ptr->next;
if (ptrNext->iNumber == iNumber)
{
// Found!
// next of predecessor points on successor
ptr->next = ptrNext->next;
// Delete searching element
free(ptrNext);
break;
}
ptr = ptrNext; // if not found yet
}
}
} // end Delete Element
// Output function
// purpose : - prints the elements of the list
void Output(struct List *base)
{
struct List *ptr=NULL;
ptr = base;
while (ptr != NULL)
{
printf("\n\nZahl: %d", ptr->iNumber);
printf("\nBuchstabe: %c", ptr->cChar);
ptr = ptr->next;
}
} // end Output
|
hi leute,also ich bräucht das für die uni wo wir leider noch c lernen und c++ VERBOTEN IST!
somit müssen wir diese listen serlber schreiben
kann mir wer verraten warum der code oben nicht funktioniert?
bei mir kommt da ein assert fehler :
undefined refference to assert : in function DeleteElement[\quote]
und die printfunktion liefter,wenn ich das assert auskommentiere gar nix (vermutlich,weil es eben das assert brauch).
kann mir wer ne funktionierende lösung posten oder mir erklären, warum da ein fehler auftritt?
mfg
Drac
[/code]