头插法和尾插法
#include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; typedef struct Lnode{ int data; Lnode *next; }Lnode,*linklist; void creat_h(linklist &L){//头插法 linklist s; int n,tmp; L=(linklist)malloc(sizeof(Lnode)); L->next=NULL; scanf("%d",&n); for (int i=1;i<=n;i++){ scanf("%d",&tmp); s=(linklist)malloc(sizeof(Lnode));//新建立一个节点 s->data=tmp; s->next=L->next;//这相当于把S->NEXT一直指向链表头节点 然后头结点变成不是头节点后 L->next=s;//再把这头结点个节点移动成头结点 } } void creat_w(linklist &L){//尾插法 linklist p,q; int n,tmp; L=(linklist)malloc(sizeof(Lnode)); L->next=NULL; p=L; scanf("%d",&n); for (int i=1;i<=n;i++){ scanf("%d",&tmp); q=(linklist)malloc(sizeof(Lnode)); q->data=tmp; p->next=q;//把p指向下一个节点 p=q;//更新这个节点 } p->next=NULL;//写在最好 } void print(linklist head){ linklist p=head->next; while(p!=NULL){ printf("%d ",p->data); p=p->next; } } int main(){ int n; linklist a; creat_w(a); print(a); return 0; }
有不懂欢迎咨询
QQ:1326487164(添加时记得备注)