受到六楼的启发~送上基本的链表操作代码~可以参考一下~
程序代码:
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof (Node)
typedef struct Node
{
int n;
struct Node* next;
}Node;
Node* creat(Node* head);
void print(Node* head);
Node* del(Node* head,int key);
Node* insert(Node* head,int key,int s);
Node* find(Node* head,int key);
Node* sort(Node* head);
int main()
{
Node* head=NULL;
head=creat(head);
print(head);
head=sort(head);
print(head);
return 0;
}
Node* creat(Node* head)
{
int a=0;
Node tnode={0};
Node* p=&tnode;
tnode.next=head;
scanf("%d",&a);
while (p->next)
p=p->next;
while (a)
{
p=p->next=(Node* )malloc(LEN);
p->n=a;
p->next=NULL;
scanf("%d",&a);
}
return tnode.next;
}
void print(Node* head)
{
Node tnode={0};
Node* p=&tnode;
tnode.next=head;
while (p=p->next)
printf("%d ",p->n);
puts("");
}
Node* del(Node* head,int key)
{
Node tnode={0};
Node* p=&tnode;
tnode.next=head;
while (p->next)
if (p->next->n==key)
{
Node* tmp=p->next->next;
free(p->next);
p->next=tmp;
}
else
p=p->next;
return tnode.next;
}
Node* insert(Node* head,int key,int s)
{
Node tnode={0};
Node* p=&tnode;
tnode.next=head;
while (p->next)
if (p->next->n==key)
{
Node* tem=(Node* )malloc(LEN);
tem->next=p->next;
tem->n=s;
p->next=tem;
break;
}
else
p=p->next;
return tnode.next;
}
Node* find(Node* head,int key)
{
Node tnode={0};
Node* p=&tnode;
tnode.next=head;
while (p->next)
if (p->next->n==key)
return p->next;
else
p=p->next;
return NULL;
}
Node* sort(Node* head)
{
Node tnode={0};
Node* p=&tnode;
tnode.next=head;
while (p->next)
{
Node* pt=p;
while (pt->next)
if (pt->next->n<p->next->n)
{
Node* tmp=pt->next->next;
pt->next->next=p->next;
p->next=pt->next;
pt->next=tmp;
}
else
pt=pt->next;
p=p->next;
}
return tnode.next;
}