1 2 3 4
| struct node{ int data; struct node *next; };
|
主函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| struct node *head,*p,*q,*t; int n,a; cin>>n; head=NULL; for(int i=0;i<n;i++){ cin>>a; p=(struct node*)malloc(sizeof(struct node)); p->data=a; p->next=NULL; if(head==NULL){ head=p; } else{ q->next=p; }
q=p; p=NULL; }
|
插入
注意:
如果这个链表很长,且每个节点的值相同
再插一个相同的值进去会遍历整个链表然后插入到链表尾部 浪费了时间
将大于号改为大于等于
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| cin>>a; t=head; while(t!=NULL){ if(t->next==NULL||t->next->data>=a){ p=(struct node*)malloc(sizeof(struct node)); p->data=a; p->next=t->next; t->next=p; p=NULL; break; } t=t->next; }
|
输出
1 2 3 4 5 6 7
| t=head; while(t!=NULL){ cout<<t->data<<" "; t=t->next; } free(t); t=NULL;
|