Operación de lista vinculada de lista lineal
1. Definición de estructura
typedef struct LNode* LinkedList;
typedef struct LNode
{
ElemType data;
struct LNode* next;
}LNode;
2. Inicialización de la lista vinculada
bool InitLinkedList(LinkedList &L)
{
L = (LinkedList)malloc(sizeof(struct LNode));
if(!L) exit(OVERFLOW);
L->next = NULL;
return success;
}
3. Inserte un elemento en la posición especificada en la lista vinculada.
bool LinkedListInsert(LinkedList &L, int index, ElemType e)
{
LNode* p = L; int i = 1;
while(p && i < index)
{
p = p->next;
i++;
}
if(!p || i > index) return failed;
LNode* s = (LNode* )malloc(sizeof(LNode));
s->data = e;
s->next = p->next;
p->next = s;
return success;
}
4. Elimina el elemento en la posición especificada de la lista vinculada.
bool LinkedListDelete(LinkedList &L, int index)
{
LNode* p = L; int i = 1;
while(p->next && i < index)
{
p = p->next;
i++;
}
if(!p->next || i > index) return failed;
LNode* s = p->next;
p->next = s->next;
free(s);
return success;
}
5. Obtén el elemento de posición especificado
bool GetLinkedListElem(LinkedList L, int index, ElemType &e)
{
LNode* p = L->next; int i = 1;
while(p && i < index)
{
p = p->next;
i++;
}
if(!p || i > index)return failed;
e = p->data;
return success;
}
6. Obtenga la posición del elemento especificado en la lista vinculada
int LocateLinkedListElem(LinkedList L, ElemType e)
{
LNode* p = L->next; int i = 1;
while(p && p->data != e)
{
p = p->next;
i++;
}
if(p)return i;
return -1;
}
7. Recorra la lista vinculada de principio a fin.
void ReadLinkedList(LinkedList &L)
{
LNode* p = L->next;
while(p)
{
printf("%d\n",p->data);
p = p->next;
}
}