
C语言编程:实现对链表数据的输出~~
output(struct linklist *head){struct linklist *p;p = head;while(p){printf(%d , p->data);p = p->next;}}
JAVA怎样用链表来实现冒泡排序,我需要整个编程过程,谢谢
语法错误已经全部改了,插入算法还有逻辑错误,现在没时间修改了#include
C语言 编程实现静态链表的建立和输出
typedef int Elemtype;typedef int status;#define OVERFLOW -2#define OK 1#define ERROR -1#include stdio.h#include stdlib.htypedef struct LNode { Elemtype data; struct LNode *next;}*linklist;\\\/\\\/构造链表void Create_Linklist(linklist &L){ linklist p; p=(linklist)malloc(sizeof(LNode)); if(!p) exit(OVERFLOW); L=p; L->next =NULL;}\\\/\\\/节点插入void Insert_Linklist(linklist &L){ linklist p; int n,i; printf(请输入插入节点的个数n: ); scanf(%d,&n); getchar(); for(i=n;i>0;i--) { p=(linklist )malloc(sizeof(LNode)); scanf(%d,&p->data); p->next=L->next ; L->next =p; }}\\\/\\\/遍历输出并输出长度 status Visit_linklist(linklist &L){ linklist p; int i=1; p=L->next ; if(L->next==NULL) return ERROR; while(p->next !=NULL) { printf(%d ,p->data ); p=p->next ; i++; } printf(%d\\\ ,p->data ); printf(长度为:%d\\\ ,i); return OK;} \\\/\\\/查找值为x的直接前驱结点q并输出 void Search_linklist(linklist &L) { int x,k=0; linklist p=L,q; printf(输入x: ); scanf(%d,&x); getchar(); if(L->next ==NULL) printf(该表为空
\\\ ); while(p->next!=NULL) { q=p; if(p->next ->data ==x) { printf(%d ,q->data ); k=1; } p=p->next ; } if(p->next &&p->data ==x) { printf(%d ,p->data ); k=1; } if(k==0) printf(未找到值为%d的结点\\\ ,&x); printf(\\\ ); } \\\/\\\/删除节点 status Delete_linklist(linklist &L) { linklist p,q; int k=0,x; printf(请输入删除节点的值x: ); scanf(%d,&x); getchar(); if(L->next ==NULL) return ERROR; p=L; q=L->next ; while(q!=NULL) if(q->data ==x) { k=1; p=q ; p->next =q->next ; free(q); q=p->next ; } else { p=q ; q=p->next ; } if(k==0) printf(表中没有值为%d的结点
\\\ ,&x); return OK; } \\\/\\\/链表逆置 void ListInverse_linkliast(linklist &L) { linklist k,p,q; p=L; while (p->next !=NULL) { p=p->next ; } k=p; while (L->next !=p) { q=L->next ; L->next = q->next ; k->next =q; } } \\\/\\\/链表奇偶分解 void Break_linklist (linklist &La,linklist &Lb) { linklist p,q; p=La->next; q=Lb; while(p->next!=NULL) { if(p->data %2==0) { q->next =p; q=q->next ; } p=p->next ; } if(p->data %2==0) { q->next =p; q=q->next ; } } \\\/\\\/主菜单 void main() { linklist L1,L2; printf( (1) 建立带头节点的单链表\\\ ); printf( (2) 插入节点\\\ ); printf( (3) 计算链表长度并输出单链表\\\ ); printf( (4) 查找值为x的直接前驱结点并输出其值\\\ ); printf( (5) 删除节点值为x的结点\\\ ); printf( (6) 逆置单链表结点\\\ ); printf( (7) 单链表奇偶分解\\\ ); int choice; printf( 请输入选择:); while(scanf(%d,&choice)) { getchar(); printf(\\\ \\\ ); switch(choice) { case 1: Create_Linklist(L1); break; case 2: Insert_Linklist(L1); break; case 3: Visit_linklist(L1); break; case 4: Search_linklist(L1); break; case 5: Delete_linklist(L1); break; case 6: ListInverse_linkliast(L1); break; case 7: Create_Linklist(L2); Break_linklist (L1,L2); break; default: printf( 输入有误
); break; } } }
编程实现线性表的链式存储结构,即链表,实现链表的建立和输出
程序代码:#include



