#include <stdio.h>
#include "ListLink.h"
int main()
{
Node *head;
int ret = 0;
ret = LinkInit(&head);
if(ret == FAILURE)
{
printf("init fssilure\n");
}
else
{
printf("init success\n");
}
ret = Linkcreate(head);
if(ret == FAILURE)
{
printf("create failure\n");
}
else
{
printf("create success\n");
}
ret = ListLength(head);
if(ret == FAILURE)
{
printf("failure\n");
}
else
{
printf("length is %d\n", ret);
}
ret = ListEmpty(head);
if(ret == FAILURE)
{
printf("request failure\n");
}
else if(ret == SUCCESS)
{
printf("list is empty\n");
}
else
{
printf("list is not empty\n");
}
ret = ListTraverse(head);
if(ret == FAILURE)
{
printf("travrese failure\n");
}
else
{
printf("traverse success\n");
}
ret = ListInserttop(head);
if(ret == FAILURE)
{
printf("inserttop failure\n");
}
else
{
printf("inserttop success\n");
}
ret = ListInsertback(head);
if(ret == FAILURE)
{
printf("insertback failure\n");
}
else
{
printf("insertback success\n");
}
ret = ListTraverse(head);
if(ret == FAILURE)
{
printf("travrese failure\n");
}
else
{
printf("traverse success\n");
}
ret = ListInsertRandom(head);
if(ret == FAILURE)
{
printf("insertrandom failure\n");
}
else
{
printf("insertrandom success\n");
}
ret = ListTraverse(head);
if(ret == FAILURE)
{
printf("travrese failure\n");
}
else
{
printf("traverse success\n");
}
ret = ListClear(head);
if(ret == FAILURE)
{
printf("clear failure\n");
}
else
{
printf("clear success\n");
}
ret = ListTraverse(head);
if(ret == FAILURE)
{
printf("travrese failure\n");
}
else
{
printf("traverse success\n");
}
ret = ListDestory(head);
if(ret == FAILURE)
{
printf("destory failure\n");
}
else
{
printf("destory success\n");
}
return 0;
}#include <stdio.h>
#include "ListLink.h"
int main()
{
Node *head;
int ret = 0;
ret = LinkInit(&head);
if(ret == FAILURE)
{
printf("init fssilure\n");
}
else
{
printf("init success\n");
}
ret = Linkcreate(head);
if(ret == FAILURE)
{
printf("create failure\n");
}
else
{
printf("create success\n");
}
ret = ListLength(head);
if(ret == FAILURE)
{
printf("failure\n");
}
else
{
printf("length is %d\n", ret);
}
ret = ListEmpty(head);
if(ret == FAILURE)
{
printf("request failure\n");
}
else if(ret == SUCCESS)
{
printf("list is empty\n");
}
else
{
printf("list is not empty\n");
}
ret = ListTraverse(head);
if(ret == FAILURE)
{
printf("travrese failure\n");
}
else
{
printf("traverse success\n");
}
ret = ListInserttop(head);
if(ret == FAILURE)
{
printf("inserttop failure\n");
}
else
{
printf("inserttop success\n");
}
ret = ListInsertback(head);
if(ret == FAILURE)
{
printf("insertback failure\n");
}
else
{
printf("insertback success\n");
}
ret = ListTraverse(head);
if(ret == FAILURE)
{
printf("travrese failure\n");
}
else
{
printf("traverse success\n");
}
ret = ListInsertRandom(head);
if(ret == FAILURE)
{
printf("insertrandom failure\n");
}
else
{
printf("insertrandom success\n");
}
ret = ListTraverse(head);
if(ret == FAILURE)
{
printf("travrese failure\n");
}
else
{
printf("traverse success\n");
}
ret = ListClear(head);
if(ret == FAILURE)
{
printf("clear failure\n");
}
else
{
printf("clear success\n");
}
ret = ListTraverse(head);
if(ret == FAILURE)
{
printf("travrese failure\n");
}
else
{
printf("traverse success\n");
}
ret = ListDestory(head);
if(ret == FAILURE)
{
printf("destory failure\n");
}
else
{
printf("destory success\n");
}
return 0;
}
int LinkInit(Node **l)
{
if((*l) == NULL)
{
return FAILURE;
}
(*l) = (Node *)malloc(sizeof(Node));
if((*l) == NULL)
{
return FAILURE;
}
(*l)->next = NULL;
return SUCCESS;
}
int Linkcreate(Node *head)
{
int x;
Node *p, *q;
if(head == NULL)
{
return FAILURE;
}
printf("please input\n");
while(1)
{
scanf("%d", &x);
if(0 == x)
{
break;
}
q = (Node *)malloc(sizeof(Node));
q->data = x;
if(head->next == NULL)
{
q->next = head->next;
head->next = q;
}
else
{
q->next = p->next;
p->next = q;
}
p = q;
}
return SUCCESS;
}
int ListLength(Node *head)
{
if(head == NULL)
{
return FAILURE;
}
int i = 0;
Node *p = head->next;
while(p != NULL)
{
i++;
p = p->next;
}
return i;
}
int ListEmpty(Node *head)
{
if(head == NULL)
{
return FAILURE;
}
if(head->next != NULL)
{
return FALSE;
}
return SUCCESS;
}
int ListTraverse(Node *head)
{
if(head == NULL)
{
return FAILURE;
}
Node *p = head->next;
while(p != NULL)
{
printf("%d ", p->data);
p = p->next;
}
printf("\n");
return SUCCESS;
}
int ListInserttop(Node *head)
{
int x;
if(head == NULL)
{
return FAILURE;
}
printf("please input\n");
scanf("%d", &x);
Node *p = (Node *)malloc(sizeof(Node));
p->data = x;
p->next = head->next;
head->next = p;
return SUCCESS;
}
int ListInsertback(Node *head)
{
int x;
if(head == NULL)
{
return FAILURE;
}
Node *p = head;
while(p->next != NULL)
{
p = p->next;
}
printf("please input\n");
scanf("%d", &x);
Node *q = (Node *)malloc(sizeof(Node));
if(q == NULL)
{
return FAILURE;
}
q->data = x;
q->next = p->next;
p->next = q;
return SUCCESS;
}
int ListInsertRandom(Node *head)
{
if(head == NULL)
{
return FAILURE;
}
int l, x, i;
Node *p = head;
printf("please input where you want to insert\n");
scanf("%d", &l);
printf("please input element\n");
scanf("%d", &x);
Node *q = (Node *)malloc(sizeof(Node));
q->data = x;
for(i = 1; i < l; i++)
{
p = p->next;
}
q->next = p->next;
p->next = q;
return SUCCESS;
}
int ListClear(Node *head)
{
if(head == NULL)
{
return FAILURE;
}
Node *p = head->next;
while(p != NULL)
{
Node *q = p;
p = p->next;
free(q);
}
head->next = NULL;
return SUCCESS;
}
int ListDestory(Node *head)
{
if(head == NULL)
{
return FAILURE;
}
//Node *q;
Node *p = head->next;
while(p != NULL)
{
Node *q = p;
p = p->next;
free(q);
}
free(head);
free(p);
head = NULL;
p = NULL;
}