#include<stdio.h>
#include <stdlib.h>
typedef struct Node* A;
struct Node
{
A next;
int value;
};
int init(A *head); //单链表初始化
int insert(A head, int x); //单链表的结点插入
int insert2(A head, int value, int index); // 单链表从尾开始插入
int search(A head, int value); //根据值在查找数据并删除
void querty(A head, int value); //根据值查找数据位置
void queriy(A head, int x); // 根据地址查找数据的值
int main()
{
int i;
A head;
int ret = init(&head);
if (-1 == ret)
{
return -1;
}
for (i = 0; i < 10; i++)
{
insert(head, i);
}
for (i = 0; i < 10; i++)
{
inserthead(head, i);
}
print(head);
printf("length = %d\n", length(head));
delete(head, 3);
print(head);
insert2(head, 99, 5);
print(head);
search(head, 9);
print(head);
querty(head, 0);
queriy(head, 6);
return 0;
}
int init (A *head)
{
A newnode = (A )malloc(sizeof(struct Node));
if (NULL == newnode)
{
return -1;
}
*head = newnode;
newnode->value = 0;
newnode->next = NULL;
return 0;
}
int insert(A head, int element)
{
A newnode = (A)malloc(sizeof(struct Node));
if (NULL == newnode)
{
return -1;
}
newnode->value = element;
newnode->next = NULL;
while (head->next != NULL)
{
head = head->next;
}
head->next = newnode;
return 0;
}
void print(A head)
{
while (head->next != NULL)
{
printf("%d ", head->next->value);
head = head->next;
}
printf("\n");
}
int inserthead(A head, int x)
{
A newnode = (A)malloc(sizeof(struct Node));
if (NULL == newnode)
{
return -1;
}
newnode->value = x;
newnode->next = head->next;
head->next = newnode;
}
int length(A head)
{
int count = 0;
while (NULL != head->next)
{
count++;
head = head->next;
}
return count;
}
int delete(A head, int index)
{
A temp;
int i;
for (i = 0; i < index - 1; i++)
{
head = head->next;
}
temp = head->next->next;
free(head->next);
head->next = temp;
return 0;
}
int insert2(A head, int value, int index)
{
int i;
A newnode;
newnode = (A)malloc(sizeof(struct Node));
newnode->value = value;
if (index < 0 || index > length(head))
{
printf("out of range\n");
}
else
{
for (i = 0; i < index; i++)
{
head = head->next;
}
newnode->next = head->next;
head->next = newnode;
}
}
int search(A head, int value)
{
A temp;
int len = length(head);
int i = 0;
for (i = 0; i < len; i++)
{
if (value == head->next->value)
{
temp = head->next->next;
free(head->next);
head->next = temp;
}
else
{
head = head->next;
}
}
return 0;
}
void querty(A head, int value)
{
int i,count = 0;
int len = length(head);
for (i = 0; i < len; i++)
{ if (head->next->value == value)
{
printf("%d is at %d\n ", value, i);
count++;
}
head = head->next;
}
if (count == 0)
printf("not found");
}
void queriy(A head, int x)
{
int len = length(head);
int i,count = 0;
for (i = 0; i < len; i++)
{
if (x == i)
printf("the %d is %d", x, head->next->value);
count++;
head = head->next;
}
if (0 == count)
{
printf("not found");
}
}
#include <stdlib.h>
typedef struct Node* A;
struct Node
{
A next;
int value;
};
int init(A *head); //单链表初始化
int insert(A head, int x); //单链表的结点插入
void print(A head); //单链表的输出
int inserthead(A head, int x); //单链表从表头开始插入数据
int length(A head); //计算单链表的长度int insert2(A head, int value, int index); // 单链表从尾开始插入
int search(A head, int value); //根据值在查找数据并删除
void querty(A head, int value); //根据值查找数据位置
void queriy(A head, int x); // 根据地址查找数据的值
int main()
{
int i;
A head;
int ret = init(&head);
if (-1 == ret)
{
return -1;
}
for (i = 0; i < 10; i++)
{
insert(head, i);
}
for (i = 0; i < 10; i++)
{
inserthead(head, i);
}
print(head);
printf("length = %d\n", length(head));
delete(head, 3);
print(head);
insert2(head, 99, 5);
print(head);
search(head, 9);
print(head);
querty(head, 0);
queriy(head, 6);
return 0;
}
int init (A *head)
{
A newnode = (A )malloc(sizeof(struct Node));
if (NULL == newnode)
{
return -1;
}
*head = newnode;
newnode->value = 0;
newnode->next = NULL;
return 0;
}
int insert(A head, int element)
{
A newnode = (A)malloc(sizeof(struct Node));
if (NULL == newnode)
{
return -1;
}
newnode->value = element;
newnode->next = NULL;
while (head->next != NULL)
{
head = head->next;
}
head->next = newnode;
return 0;
}
void print(A head)
{
while (head->next != NULL)
{
printf("%d ", head->next->value);
head = head->next;
}
printf("\n");
}
int inserthead(A head, int x)
{
A newnode = (A)malloc(sizeof(struct Node));
if (NULL == newnode)
{
return -1;
}
newnode->value = x;
newnode->next = head->next;
head->next = newnode;
}
int length(A head)
{
int count = 0;
while (NULL != head->next)
{
count++;
head = head->next;
}
return count;
}
int delete(A head, int index)
{
A temp;
int i;
for (i = 0; i < index - 1; i++)
{
head = head->next;
}
temp = head->next->next;
free(head->next);
head->next = temp;
return 0;
}
int insert2(A head, int value, int index)
{
int i;
A newnode;
newnode = (A)malloc(sizeof(struct Node));
newnode->value = value;
if (index < 0 || index > length(head))
{
printf("out of range\n");
}
else
{
for (i = 0; i < index; i++)
{
head = head->next;
}
newnode->next = head->next;
head->next = newnode;
}
}
int search(A head, int value)
{
A temp;
int len = length(head);
int i = 0;
for (i = 0; i < len; i++)
{
if (value == head->next->value)
{
temp = head->next->next;
free(head->next);
head->next = temp;
}
else
{
head = head->next;
}
}
return 0;
}
void querty(A head, int value)
{
int i,count = 0;
int len = length(head);
for (i = 0; i < len; i++)
{ if (head->next->value == value)
{
printf("%d is at %d\n ", value, i);
count++;
}
head = head->next;
}
if (count == 0)
printf("not found");
}
void queriy(A head, int x)
{
int len = length(head);
int i,count = 0;
for (i = 0; i < len; i++)
{
if (x == i)
printf("the %d is %d", x, head->next->value);
count++;
head = head->next;
}
if (0 == count)
{
printf("not found");
}
}