struct node next I Node, *LinkList /*初始化带头结点的单链表* void InitList(LinkList *pL) *pL=(LinkList)malloc(sizeof (node)) (=*pL)->next=NULL /*头插法插入元素*/ void InsertList (LinkList L, ElemType e) Linklist p: p=(LinkList)malloc(sizeof (Node)) p->data=e p->next=L->next void Nizhi(linkList L) Linklist p, g,w p=L->next /*将原来的第一个结点变为最后一个*/ if(p != NULL) p->next=NULL >next L->next=p void Print(LinkList L) Linklist for(p= L->next: p!= NULL p= p->next) printf("%d\t", p->data) rinf("Ⅶn"); id maino
struct node *next; }Node,*LinkList; /*初始化带头结点的单链表*/ void InitList(LinkList *pL) { *pL=(LinkList)malloc(sizeof(Node)); (*pL)->next=NULL; } /*头插法插入元素*/ void InsertList(LinkList L,ElemType e) { LinkList p; p=(LinkList)malloc(sizeof(Node)); p->data=e; p->next=L->next; L->next=p; } void Nizhi(LinkList L) { LinkList p,q,w; p=L->next; /*将原来的第一个结点变为最后一个*/ if(p != NULL) { q=p->next; p->next=NULL; } while(q != NULL) { w=q->next; q->next=p; p=q; q=w; } L->next=p; } void Print(LinkList L) { LinkList p; for(p = L->next; p != NULL; p = p->next) printf("%d\t",p->data); printf("\n"); } void main()
netlist(&L);/*初始化链表*/ /*向线形表中顺序存入1-20*/ for(i=0;i<20;i++) st(l, i+1) Print(L);/*将原结果输出* Nizhi (l) Print(l) /*将逆置后结果输出* 2.8/*P49习题2.8示例程序* #include <stdio. h> #include <stdlib. h> #define null o typedef int ElemType typedef struct node data I Nod /*初始化带头结点的单链表*/ void InitList(LinkList *pL) *pL=(LinkList)malloc(sizeof ( node)) (=*pL)->next=NULL /*向递增有序的线性表中插入元素,插入后仍递增有序* void InsertList(LinkList L, ElemType e) p=(LinkList)malloc(sizeof (Node)) q while(g->next ! NULL & g>next->data e) g= g>next: g->next=p //归并LA和LB到LC中 void Guibing(linkList LA, LinkList LB, LinkList LC) Linklist
{ int i; LinkList L; InitList(&L); /*初始化链表*/ /*向线形表中顺序存入 1-20*/ for(i=0;i<20;i++) InsertList(L,i+1); Print(L); /*将原结果输出*/ Nizhi(L); Print(L); /*将逆置后结果输出*/ } 2.8 /*P49 习题 2.8 示例程序 */ #include <stdio.h> #include <stdlib.h> #define NULL 0 typedef int ElemType; typedef struct node { ElemType data; struct node *next; }Node,*LinkList; /*初始化带头结点的单链表*/ void InitList(LinkList *pL) { *pL=(LinkList)malloc(sizeof(Node)); (*pL)->next=NULL; } /*向递增有序的线性表中插入元素,插入后仍递增有序*/ void InsertList(LinkList L,ElemType e) { LinkList p, q; p=(LinkList)malloc(sizeof(Node)); p->data=e; q = L; while(q->next != NULL && q->next->data < e) q = q->next; p->next=q->next; q->next=p; } //归并 LA 和 LB 到 LC 中 void Guibing(LinkList LA, LinkList LB, LinkList LC) { LinkList p, q, t; p = LA->next;
while(p null & q!= NULL if(p->data q->data t= p: els t->next=LC->next;//将t所指结点插入LC头结点之后 LC->next = t LB->next NULL void Print(linkList L) for(p L->next: p != NULL: p= p->next) printf("%d\t", p->data) printf("\n") id mainO Linklist la, lb, lc InitList(&LA) /*初始化链表*/ InitList(&LB) Initlist(&LC) /*向线形表LA中按递增有序地插入5个数*/ printf("请输入第%个数:",i+1) InsertList(LA, e) Print (lay /*将LA输出*/ /*向线形表LA中按递增有序地插入5个数*/
q = LB->next; while(p != NULL && q != NULL) { if(p->data < q->data) { t = p; p = p->next; } else { t = q; q = q->next; } t->next = LC->next;//将 t 所指结点插入 LC 头结点之后 LC->next = t; } LA->next = NULL; LB->next = NULL; } void Print(LinkList L) { LinkList p; for(p = L->next; p != NULL; p = p->next) printf("%d\t",p->data); printf("\n"); } void main() { int i, e; LinkList LA, LB, LC; InitList(&LA); /*初始化链表*/ InitList(&LB); InitList(&LC); /*向线形表 LA 中按递增有序地插入 5 个数*/ for(i=0; i<5; i++) { printf("请输入第 %d 个数:",i+1); scanf("%d",&e); InsertList(LA,e); } Print(LA); /*将 LA 输出*/ /*向线形表 LA 中按递增有序地插入 5 个数*/ for(i=0; i<5; i++)