Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- typedef struct Stringa {
- char *stringa;
- struct Stringa *next;
- } tstringa;
- tstringa *head = NULL;
- const int DIM = 301;
- void Stampa();
- void InsertC(char *buffer);
- tstringa *EliminaToken(char *buffer);
- tstringa *RicercaToken(char *buffer);
- int main (int argc, char **argv){
- int i;
- char stringa[DIM];
- char token[DIM-1];
- printf("Inserisci testo libero> ");
- while (scanf("%s", stringa) != EOF)
- InsertC(stringa);
- printf("Inserisci token da eliminare> ");
- scanf("%s", token);
- while (RicercaToken (token))
- head = EliminaToken(token);
- Stampa();
- }
- void Stampa (){
- tstringa *curr = head;
- while (curr){
- printf("%s", curr->stringa);
- curr = curr->next;
- }
- }
- void InsertC(char *buffer){
- tstringa *curr, *pnodo;
- curr = head;
- pnodo = (tstringa *) malloc (sizeof(tstringa));
- pnodo->stringa = (char *) malloc (sizeof(char) * (strlen(buffer)+1));
- strcpy(pnodo->stringa, buffer);
- pnodo->next = NULL;
- //if (!(*buffer))
- // return;
- if(!head)
- head = pnodo;
- else {
- while (curr && curr->next)
- curr = curr->next;
- curr->next = pnodo;
- }
- }
- tstringa *EliminaToken (char *buffer){
- tstringa *curr, *prev;
- for (curr = head, prev = NULL;
- curr && strcmp(buffer, curr->stringa) != 0;
- prev = curr, curr = curr->next) ;
- //if (!(*buffer)) return;
- if (!curr) return head;
- if (!prev) return head = head->next;
- else {
- prev->next = curr->next;
- free (curr);
- return head;
- }
- }
- tstringa *RicercaToken(char *buffer){
- tstringa *curr = head;
- while (curr && strcmp(buffer, curr->stringa))
- curr = curr->next;
- return curr;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement