链表
#include <stdio.h>
#include <malloc.h>
typedef struct Node {
int data;
struct Node* next;
}Node, * LinkList;
void CreateListHead(LinkList &L) {
int i;
L = (LinkList)malloc(sizeof(Node));
L->next = NULL;
}
void ListAdd(LinkList L, int n) {
int j;
LinkList p, s;
p = L;
while (p->next) {
p = p->next;
}
s = (LinkList)malloc(sizeof(Node));
s->data = n;
p->next = s;
s->next = NULL;
}
int ListInsert(LinkList L, int i, int n) {
int j;
LinkList p, s;
p = L;
j = 1;
while (p && j < i) {
p = p->next;
j++;
}
if (!p || j > i) {
printf("error,the node is not exist.");
return 0;
}
s = (LinkList)malloc(sizeof(Node));
s->data = n;
s->next = p->next;
p->next = s;
return 1;
}
int ListDelete(LinkList L, int i) {
int j;
LinkList p, q;
p = L;
j = 1;
while (p->next && j < i) {
p = p->next;
j++;
}
if (!(p->next) || j > i) {
printf("error");
return 0;
}
q = p->next;
p->next = q->next;
free(q);
return 1;
}
int ClearList(LinkList L) {
LinkList p, q;
p = L->next;
while (p) {
q = p->next;
free(p);
p = q;
}
L->next = NULL;
return 1;
}
void TraverseList(LinkList L) {
LinkList p, q;
p = L->next;
printf("list: ");
while (p) {
printf("%d ", p->data);
p = p->next;
}
}
int main() {
LinkList l;
CreateListHead(l);
ListAdd(l, 1);
ListAdd(l, 2);
ListAdd(l, 3);
ListAdd(l, 4);
ListAdd(l, 5);
TraverseList(l);
printf("\n");
ListInsert(l, 3, 8);
TraverseList(l);
printf("\n");
ListDelete(l,4);
TraverseList(l);
printf("\n");
ClearList(l);
TraverseList(l);
printf("\n");
return 0;
}