Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
- typedef struct{
- int cod;
- char nome[40];
- }SDado;
- typedef struct{
- SDado info;
- struct SNodo *pNext;
- }SNodo;
- typedef struct{
- Snodo *pFirst;
- }SLista;
- void Reset(SLista *pLista)
- {
- Clear(pLista);
- pLista = (SLista *)malloc(sizeof(SLista));
- }
- void Clear(SLista *pLista)
- {
- SNodo *pAtual, *pAnterior;
- int nPos;
- if (pLista->pFirst == NULL)
- return;
- if ()
- }
- bool PUSH(SLista *pLista, SNodo *pNodo, unsigned int nIndex)
- {
- SNodo *pAtual, *pAnterior;
- int nPos;
- if (pLista->pFirst == NULL && nIndex !=0)
- return 0; /* erro: nIndex invalido */
- else
- {
- if (pLista->pFirst == NULL && nIndex == 0)
- {
- pLista->pFirst = pNodo;
- pLista->pFirst->pNext = NULL;
- return 1;
- }
- else
- if (nIndex == 0)
- {
- pNodo->pNext = pLista->pFirst;
- pLista->pFirst = pNodo;
- return 1;
- }
- }
- }
- bool POP(SLista *pLista, SNodo *pNodo, unsigned int nIndex)
- {
- SNodo *pAnterior, *pAtual;
- int nPos;
- if (pLista->pFirst == NULL) return 0; /* erro: lista vazia */
- if (nIndex == 0)
- {
- pNodo = pLista->pFirst;
- pLista->pFirst = pLista->pFirst->pNext;
- return 1;
- }
- pAtual = pLista->pFirst;
- for (nPos = 0; nPos < nIndex && pAtual != NULL; nPos++)
- {
- pAnterior = pAtual;
- pAtual = pAtual->pNext;
- }
- if (!pAtual) return 0; // erro nIndex invalido
- pAnterior->pNext = pAtual->pNext;
- pNodo = pAtual;
- return 1;
- }
- void main()
- {
- SLista *Encadeada=malloc(sizeof(SLista));
- Encadeada->pFirst=NULL;
- SNodo *Nodo;
- unsigned int i=0, j, a;
- bool confere;
- Inicio: printf("\nSelecione a sua escolha...\n0: Insere pessoa\n1: Deleta pessoa\n2: Limpa a lista\n3: Lista na tela as pessoas\n4: Sair do programa\nDigite: ");
- scanf("%lu", &a);
- switch(a)
- {
- case 0:
- if (i > 0)
- {
- printf("Digite o índice: ");
- scanf("%lu", &j);
- }
- Nodo=malloc(sizeof(SNodo));
- printf("Digite o nome: ");
- getchar();
- fgets(Nodo->info.nome,40,stdin);
- Nodo->info.cod = (int) *(Nodo->info.nome);
- confere=PUSH(Encadeada,Nodo,j);
- if (confere == true)
- {
- printf("Adicionado com sucesso!\n");
- i++;
- }
- else
- printf("Erro.\n");
- goto Inicio;
- break;
- case 1:
- if (i > 1)
- {
- printf("Digite o índice: ");
- scanf("%lu", &j);
- }
- confere=POP(Encadeada,Nodo,j);
- free(Nodo);
- if (confere == true)
- {
- printf("Removido com sucesso!\n");
- i--;
- }
- else
- printf("Erro.\n");
- goto Inicio;
- break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement