纯手打,用于期末复习,未检查是否正确,仅供参考。
#include#include typedef struct node { int i; struct node* next; }Node; Node *Creat(void)//头插法 { Node*p=NULL,*head=NULL; int num; scanf("%d",&num); while(num!=0) { p=(Node*)malloc(sizeof(Node)); p->i=num; p->next=head; head=p; scanf("%d",&num); } return head; } Node *Creat2(void)//尾插法 { Node*head=NULL,*rear=NULL,*p=NULL; int num; scanf("%d",&num); while(num!=0) { p=(Node*)malloc(sizeof(Node)); p->i=num; p->next; if(head==NULL) { head=p; } else { rear->next=p; } rear=p; scanf("%d",&num); } return head; } Node *CreatOrder(void)//有序链表 从小到大 { Node *head=NULL,*pre=NULL,*cur=NULL; int num; scanf("%d",&num); while(num!=0) { if(head==NULL) { cur=(Node*)malloc(sizeof(Node)); cur->i=num; } else if(head->i>=num) { cur=(Node*)malloc(sizeof(Node)); cur->next=head; head=cur; } else { pre=head; cur=pre->next; while(cur->i next; cur=cur->next; } pre->next=(Node*)malloc(sizeof(Node)); pre->next->next=cur; } } return head; } Node *DeleteNode(Node*head,int num)//删除特定值的结点 { Node *pre=NULL,*cur=NULL; if(head==NULL) { printf("空链表,删除失败!"); } else if(num==head->i) { pre=head; head=head->next; free(pre); } else { pre=cur=head; while(cur&&num!=cur->i) { pre=cur; cur=cur->next; } if(cur) { pre->next=cur->next; free(cur); } else { printf("没有找到结点,删除失败!"); } } return head; }



