# include "stdlib.h"
# define NULL 0
using namespace std;
typedef struct list{
int data;
struct list* next;
}list,*LIST;
void create(LIST& head){//创建链表
LIST p1,p2;
head=p1=p2=(LIST)malloc(sizeof(list));
cout<<"please input a int type num,quit by pressing 0\\ndata: ";
cin>>p1->data;
for(;p1->data!=0;){
p2=p1;
p1=(LIST)malloc(sizeof(list));
cout<<"data: ";
cin>>p1->data;
p2->next=p1;
}
p2->next=NULL;
if(head->data==0)
head=NULL;
}
void insert(LIST& head){//把元素插入链表
LIST p;
p=(LIST)malloc(sizeof(list));
cout<<"please input a int type data you want to insert\\ndata: ";
cin>>p->data;
p->next=head;
head=p;
}
void Delete(LIST& head){//删除链表元素
LIST p,q;
p=head;
if(head==NULL)
cout<<"list NULL,erro\\n";
else{
cout<<"please input a int type num you want to delete\\ndata: ";
int a;
cin>>a;
for(;p->data!=a&&p->next!=NULL;p=p->next)
q=p;
if(p->next==NULL&&p->data!=a)
cout< else if(p->data==a) if(p!=head) q->next=p->next; else head=head->next; } } void SORT(LIST& head){ //链表排序 LIST p,q,s; if(head==NULL) cout<<"list is NULL,you have no need to sort it\\n"; else{ for(p=head;p!=NULL;p=p->next){ s=p; for(q=p;q!=NULL;q=q->next) if(s->data>q->data) s=q; int a=p->data; p->data=s->data; s->data=a; } } } void printn(LIST p){ //利用递归逆序打印表中各个元素 if(p == NULL){ ;}else{ printn(p->next); cout< //system("pause"); } //cout< void printl(LIST p){ //利用递归顺序打印表中各个元素 if(p == NULL){ ;}else{ cout< printl(p->next); } cout< int main(){ LIST head; create(head); cout<<"递归顺序输出链表中的元素"< cout<<"递归逆序输出链表中的元素"< system("pause"); // insert(head); // SORT(head); //print(head); //Delete(head); //print(head); return 0; system("pause"); }下载本文