定义一个单链表:
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int data;
struct Node *next;
}LinkList;
创建一个长度为N的单链表:
LinkList * Creat_List(int n)
{
LinkList * head, * node,* end;
int i = 0;
head = (LinkList *)malloc(sizeof(LinkList));
end = head;
for(i=0; i< n;i++)
{
node = (LinkList*)malloc(sizeof(LinkList));
scanf("%d",&node->data);
end->next = node;
end-> = node;
}
end->next = NULL;
return head;
}
在单链表N的位置插入一个节点:
void Link_Insert(LinkList * p, int n)
{
LinkList *temp = p,*in;
int i;
while(i<n && temp!=NULL)
{
i++;
temp = temp->next;
}
if(temp != NULL)
{
in = (LinkList* )malloc(sizeof(LinkList));
scanf("%d",&in->data);
in->next = temp->next;
temp->next = in;
}else{
printf("节点不存在");
}
}
在单链表N的位置改变一个节点的值:
void Change_LinkList(LinkList * p,int n)
{
LinkList *temp = p;
int i = 0;
while(i<n && temp!=NULL)
{
temp = temp->next;
i++;
}
if(temp!=NULL)
{
printf("输入要更改的值:");
scanf("%d",&temp->data);
}else{
printf("节点不存在");
}
}
在单链表N的位置删除一个节点:
void Delate_LinkList(LinkList * p,int n)
{
LinkList *temp = p,*copy;
int i;
for(i=0; i<n; i++)
{
copy = temp;
i++;
temp = temp->next;
}
if(temp != NULL)
{
copy->next = temp->next;
free(temp);
}else{
printf("节点不存在");
}
}
打印整个单链表:
void Print_LinkList(LinkList * p)
{
while(p->next!=NULL)
{
p = p->next;
printf("%d",p->data);
}
}