一、单链表的创建
二、单链表的逆转
一、单链表的创建
1.前插法:
思路:总将新节点插到链表前端,成为首元节点。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| typedef struct LNode { ElemType data; struct LNode* next; } LNode, * LinkList;
void create_list_h(LinkList &L,int n) { L=new LNode; L->next=NULL; for(int i=n;i>0;i--) { LinkList p=new LNode; cin>>p->data; p->next=L->next; L->next=p; } }
|
2.后插法:
思路:总将节点插到链表的尾部
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| typedef struct LNode { ElemType data; struct LNode* next; } LNode, * LinkList;
void create_list_r(LinkList &L,int n) { L=new LNode; L->next=NULL; LinkList P=L; for(int i=0;i<n;i++) { LinkList q=new LNode; cin>>q->data; q->next=NULL; P->next=q; P=q; } }
|
二、单链表的逆转
思路:先把链表一分为二,再利用前插法逐一接到头结点处。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| typedef struct LNode { ElemType data; struct LNode* next; } LNode, * LinkList;
void list_inverse(LinkList &L) { LinkList P,q; P=L->next; L->next=NULL; while(P) { q=P->next; P->next=L->next; L->next=P; P=q; } }
|