c语言单链表代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define TURE 1
#define FALSE 0
typedef struct Node{
int data;
struct Node *next;
}Node;
typedef struct Node *LinkList;
int initList(LinkList *L)
{
*L = (LinkList)malloc(sizeof(struct Node));
if (*L == NULL)
return FALSE;
(*L)->next = NULL;
return TURE;
}
int ListInsert(LinkList *L, int i, int n)
{
LinkList p, s;
int j;
p = *L;
j = 1;
while (p && j < i)
{
p = p->next;
j++;
}
if (!p || j > i)
return FALSE;
s = (LinkList)malloc(sizeof(struct Node));
if (s == NULL)
return FALSE;
s->data = n;
s->next = p->next;
p->next = s;
return TURE;
}
int ListDelete(LinkList *L, int i, int *e)
{
LinkList p, q;
int j = 1;
p = (*L)->next;
while (p && j < i)
{
p = p->next;
j++;
}
if (!(p->next) || j > i)
return FALSE;
q = p->next;
p->next = q->next;
*e = q->data;
free(q);
return TURE;
}
int destoryList(LinkList *L)
{
LinkList p, q;
p = *L;
while (p)
{
q = p->next;
free(p);
p = q;
}
return TURE;
}
void printList(LinkList *L)
{
LinkList p;
p = (*L)->next;
while (p)
{
printf("%d\n", p->data);
p = p->next;
}
}
int main(void)
{
LinkList L;
int i = 0;
int e;
initList(&L);
for (i = 0; i < 5; i++)
{
ListInsert(&L, i+1, i+1);
}
printList(&L);
ListDelete(&L, 2, &e);
printf("e=[%d]\n", e);
printList(&L);
destoryList(&L);
getchar();
return 0;
}