1、数据结构线性表的主要程序代码数据结构顺序表的主要代码(LIZHULIN)1/*有头结点的单链表的初始化、建立(表头插入、表尾插入)、求长度、插入、删除、输出*/*单链表的初始化、建立、输出*/#include#includetypedef struct Lnode /*定义线性表的单链表存储结构*/ int data; struct Lnode *next;LinkList;/*单链表的初始化*/Initlist(LinkList *L) /*动态申请存储空间*/ L = (LinkList *)malloc(sizeof(struct Lnode);/*建立头结点*/ L-next = NU
2、LL;/*建立一个带头结点的单链表,在表尾插入*/Create_L(LinkList *L,int n) LinkList *p,*q; int i; Initlist(L); /*单链表初始化*/ q=L; printf(input the valuen); for(i = n;i0;-i) p = (LinkList*)malloc(sizeof(struct Lnode); scanf(%d,&p-data); /*输入元素值*/ q-next = p; p-next = NULL; q=p; /*插入到表尾*/ /* Create_L */*建立一个带头结点的单链表,在表头插入*Cre
3、ate_L(LinkList *L,int n) LinkList *p; int i; Initlist(L); /*单链表初始化 /*需要注意第一个数据插入时的情况 /*Insert the Firset node p = (LinkList*)malloc(sizeof(struct Lnode); printf(input the valuen); scanf(%d,&p-data); /*输入元素值 L-next = p; p-next = NULL; /*将第二个及后面的数据插入 for(i = n-1;i0;-i) p = (LinkList*)malloc(sizeof(str
4、uct Lnode); printf(input a valuen); scanf(%d,&p-data); /*输入元素值 p-next = L-next; L-next = p; /*插入到表头 /* Create_L */*求单链表的长度*/int Length_LinkList(LinkList *L) LinkList *p; int i=0; p=L-next; while(p!=NULL) i+; p=p-next; return i;/*Length_LinkList*/*在第i个结点前插入数据x */Insert_LinkList(LinkList *L, int i, in
5、t x) LinkList *p,*s; int j=0; p=L; /*寻找第i个结点*/ while(jnext; if (!p) return 0;/*如果表长小于i,则无意义*/ /*插入元素x */ s=(LinkList *)malloc(sizeof(struct Lnode); s-data=x; s-next=p-next; p-next=s;/*删除第i个元素,并用y将其值返回*/int Delete_LinkList(LinkList *L, int i) LinkList *p,*q; int y; int j=0; p=L; /*寻找第i个结点*/ while(jne
6、xt; if (!p) return 0;/*如果表长小于i,则无意义*/ q=p-next; y=q-data; p-next=q-next; free(q) ; return y; /*Delete_LinkList*/*单链表值的输出*/void display(LinkList *L) /*字母链表的输出*/ LinkList *p; p=L-next; while (p!=NULL) printf(%d ,p-data); p=p-next; /*主程序*/main() LinkList *L; int len; int n=0; int x=15; int y; int i=4;
7、L = (LinkList*)malloc(sizeof(struct Lnode); /*L-data = 0;*/ L-next =NULL; printf(input the length of L ,nn); scanf(%d,&n); printf(n); Create_L(L,n); Insert_LinkList(L, i, x); /* y=Delete_LinkList(L,i); printf(the delete elment is y=%dn,y); len=Length_LinkList(L); printf(the length of L is %d,len);*/
8、 display(L); getch();2/*无头结点的单链表建立、插入、求长度、插入、删除、输出*/#include#includetypedef struct Lnode /*定义线性表的单链表存储结构*/ int data; struct Lnode *next;LinkList;/*Create */Link_Creat(LinkList *L,int n) LinkList *q,*p; int i; printf(input the datan); scanf(%d,&L-data); p=L; for(i=2; idata); p-next=q; q-next=NULL; p=
9、q; /*OutPut*/Link_Display(LinkList *L) LinkList *p; p=L; while(p!=NULL) printf(%d ,p-data); p=p-next; /*Main()*/main() LinkList *L; int n; L=(LinkList *)malloc(sizeof(struct Lnode); L-data=0; L-next=NULL; printf(Please input the length of LinkList, nn); scanf(%d,&n); Link_Creat(L,n); Link_Display(L)
10、; getch(); 3/*顺序表的建立、查找、插入运算*/#include #include typedef int datatype;#define list_maxsize 20/* define for node struct */typedef struct datatype datalist_maxsize; int length;SqList;/* InitList */void InitList(SqList *L) L-length = 0;/*Creat SqList*/void Create_SqList(SqList *L) int i=0; InitList(L);
11、printf(input SqList.datan); scanf(%d,&L-data0); while(L-datai!=-1) +i; scanf(%d,&(L-datai); L-length = i;/* the length of SqList*/int ListLength(SqList *L) return L-length;/* GetElem L-datai*/int GetElem(SqList *L, int i) if(iL-length) printf(Position Error); return; else return L-datai-1;/* Output
12、the SqList*/void Display_SqList(SqList *L) int i,n; n=ListLength(L); printf(the length is %d ,n); for(i=0;idatai);/*Main()*/main() SqList *L; /*printf(input the length of SqListn); scanf(%d,&len);*/ Create_SqList(L); Display_SqList(L); getch();4/*顺序表的归并运算*/#include #include typedef int datatype;#def
13、ine list_maxsize 20/* define for node struct */typedef struct datatype datalist_maxsize; int length;SqList;/* InitList */void InitList(SqList *L) L-length = 0;/* Creat SqList*/void Create_SqList(SqList *L) int i=0; InitList(L); printf(input the data of SqListn); scanf(%d,&L-data0); while(L-datai!=-1
14、) +i; scanf(%d,&(L-datai); L-length = i;/* the length of SqList*/int ListLength(SqList *L) return L-length;/* GetElem L-datai*/int GetElem(SqList *L, int i) if(iL-length) printf(Getelem Position Error); return; return L-datai-1;/* Insert Operation */void ListInsert(SqList *L,int i, int x) SqList *q,
15、 *p; if(iL-length) printf(the insert position error); return ; q = &(L-datai-1); /*q为插入位置*/ for(p=&(L-dataL-length-1); p=q; -p) *(p+1) = *p; L-datai-1 = x; +L-length;/* LA and LB Merged LC */void MergeList(SqList *LA,SqList *LB,SqList *LC) int La_len,Lb_len,ai,bj; int i,j; int k; i=j=1; InitList(LC)
16、; La_len = ListLength(LA); Lb_len = ListLength(LB); LC-length = La_len+Lb_len; /*for(k=0;klength;k+) LC-datak = 0; */ k=0; while(i=La_len)&(j=Lb_len) ai= GetElem(LA, i); bj= GetElem(LB, j); if(aibj) +k; ListInsert(LC,k,ai); +i; else if(ai=bj) +k; ListInsert(LC,k,ai); +k; ListInsert(LC,k,bj); +i;+j;
17、else +k; ListInsert(LC,k,bj); +j; while(i=La_len) /*Append the residual node into LA */ ai= GetElem(LA, i); +i;+k; ListInsert(LC,k,ai); while(jlength = La_len+Lb_len;/* Output the SqList*/void Display_SqList(SqList *L) int i,n; n=ListLength(L); printf(the length is %d ,n); for(i=0;idatai);/*Main()*/
18、main() SqList *LA , *LB, *LC; Create_SqList(LA); Create_SqList(LB); MergeList(LA,LB,LC); Display_SqList(LC); getch();5/* 用带头结点的循环单链表解决约瑟夫问题 */#include#includetypedef struct Lnode /*定义线性表的单链表存储结构*/ int data; struct Lnode *next;LinkList;/*单链表的初始化*/Initlist(LinkList *L) /*动态申请存储空间*/ L = (LinkList *)mal
19、loc(sizeof(struct Lnode);/*建立头结点*/ L-next = L;/*建立一个带头结点的循环单链表,数据值为1,2,3,.n,在表尾插入*/Create_L(LinkList *L,int n) LinkList *p; int i; Initlist(L); /*单链表初始化 p=L; for(i = n;i0;-i) q = (LinkList*)malloc(sizeof(struct Lnode); q-data = i; /*输入元素值 p-next =q q-next = L; /*插入到表尾 /* Create_L */*单链表值的输出*/void di
20、splay(LinkList *L) /*字母链表的输出*/ LinkList *p; p=L-next; while (p-next!=L) printf(%d ,p-data); p=p-next; /*主程序*/main() LinkList *L; int n; L = (LinkList*)malloc(sizeof(struct Lnode); /*L-data = 0;*/ L-next =L; printf(input the length of L ,nn); scanf(%d,&n); printf(n); Create_L(L,n); display(L); getch(
21、);6/* 无头结点的循环单链表的建立 */#include#includetypedef struct Lnode /*定义线性表的单链表存储结构*/ int data; struct Lnode *next;LinkList;/*Create */Link_Creat(LinkList *L,int n) LinkList *q,*p; int i; printf(input the datan); scanf(%d,&L-data); p=L; for(i=2; idata); p-next=q; q-next=NULL; p=q; p-next = L;/*尾结点指向第一个结点*/*O
22、utPut*/Link_Display(LinkList *L) LinkList *p; p=L; printf(%d ,p-data); p=p-next; while(p-next !=L) printf(%d ,p-data); p=p-next; /*Main()*/main() LinkList *L; int n; L=(LinkList *)malloc(sizeof(struct Lnode); L-data=0; L-next=NULL; printf(Please input the length of LinkList, nn); scanf(%d,&n); Link_Creat(L,n); Link_Display(L); getch();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1