/*
单链表总结
*/
#include "stdio.h"
#include "stdlib.h"
typedef struct linklist
{
int data;
struct linklist *next;
}Node;
Node* create()
{
Node *head,*p,*s;
int flag,x;
flag = 1;
head = (Node*)malloc(sizeof(Node));
p = head;
while(flag)
{
printf("请输入数字:");
scanf("%d",&x);
if(x!= 0)
{
s = (Node*)malloc(sizeof(Node));
s->data = x;
p->next =s;
p = s;
}
else flag = 0;
}
p->next = NULL;
//head = head->next;
p = head;
head = p->next;
free(p);
return (head);
}
int length(Node *head){
Node *p;
int n=0;
p = head;
while(p)
{
p = p->next;
n++;
}
return (n);
}
void print(Node *head)
{
Node *p;
p = head;
//if(head !=NULL)
// {
while(p)
{
//p = p->next;
printf("%d> ",p->data);
p = p->next;
}
//}
}
Node* insert(Node* head,int num)
{
Node *p,*p1,*p2;
p1 = head;
p = (Node*)malloc(sizeof(Node));
p->data = num;
while(p->data > p1->data&&p1->next != NULL)
{
p2 = p1;
p1 = p1->next;
}
if(p->data <= p1->data){
if(head == p1){
p->next = head;
head = p;
}else{
p2->next = p;
p->next = p1;
}
}else{
p1->next = p;
p->next = NULL;
}
}
Node* del(Node* head,int num)
{
Node * p1,*p2;
p1 = head;
while(p1->next!=NULL&&p1->data != num)
{
p2 = p1; p1=p1->next;
}
if(p1->data == num){
if(p1 == head){
head = p1->next;
free(p1);
}else {
p2->next = p1->next;
free(p1);
}
}else
{
printf("error!!!找不到%d\n",num);
// return ;
}
return (head);
}
Node* reverse(Node* head)
{
Node* p1,*p2,*p3;
if(head == NULL || head->next ==NULL)
return (head);
p1 = head;
p2 = p1->next;
while(p2)
{
p3 = p2->next;
p2->next = p1;
p1 = p2;
p2 = p3;
}
p1->next = NULL;
head = p1;
return(head);
}
void sort(Node* head)
{
int n,i,j,temp;
Node* p;
n = length(head);
for(i =0;i<n; i++)
{
p = head;
for(j = 1;j<n-i;j++)
{
if(p->next->data < p->data)
{
temp = p->next->data;
p->next->data = p->data;
p->data = temp;
}
p = p->next;
}
}
}
int main()
{
Node * L,*S;
int n =0;
L= create();
print(L);
n= length(L);
printf("链表的长度为:%d\n",n);
del(L,23);
printf("删除后:\n");
print(L);
printf("\n插入后:\n");
print(L);
insert(L,32);
printf("\n排序后:\n");
sort(L);
print(L);
//reverse(L);
}
单链表
最新推荐文章于 2023-05-06 22:43:40 发布