- 论坛徽章:
- 0
|
- #include <stdio.h>
- #include <stdlib.h>
- #define ERROR 0
- #define OK 0
- typedef int Elemtype;
- typedef int status;
- typedef struct LNode
- {
- Elemtype date;
- struct LNode *next;
- int length;
- int listsize;
- }LNode,*LinkList;
- //建立链表
- void CreateList(LinkList &L)
- {
- LinkList p;
- int a,n;
- printf("请输入要建立链表的长度\n");
- scanf("%d",&n);
- L=(LinkList)malloc(sizeof(LNode));
- L->next=NULL;
- printf("请输入链表的各元素,以空格键分开\n");
- for(a=n;a>0;--a)
- {
- p=(LinkList)malloc(sizeof(LNode));
- scanf("%d",&p->date);
- p->next=L->next;
- L->next=p;
- }
- }
- //输出链表
- void PrintList(LinkList L)
- { LinkList p;
- p=L->next;
- while(p)
- {printf("%d ",p->date);
- p=p->next;
- }
- }
- //在i位置插入元素e
- status ListInsert(LinkList &L,int a,Elemtype e)
- {
- LinkList p,s;
- int j;
- p=L;
- j=0;
- while(p&&j<a-1)
- {
- p=p->next;
- ++j;
- }
- if(!p||j>a-1)
- return ERROR;
- s=(LinkList)malloc(sizeof(LNode));
- s->date=e;
- s->next=p->next;
- p->next=s;
- return OK;
- }
- //删除第i个元素
- status ListDelete(LinkList &L,int a,Elemtype &e)
- {
- LinkList p,q;
- int j;
- p=L;
- j=0;
- while(p->next&&j<a-1)
- {
- p=p->next;
- ++j;
- }
- if(!(p->next)||j>a-1)
- return ERROR;
- q=p->next;
- p->next=q->next;
- e=q->date;
- free(q);
- return OK;
- }
- //合并La和Lb两个有序表
- void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc)
- {
- LinkList pa,pb,pc;
- pa=La->next;
- pb=Lb->next;
- pc=La;
- Lc=pc;
- while (pa&&pb)
- {
- if (pa->date<=pb->date)
- {
- pc->next=pa;
- pc=pa;
- pa=pa->next;
- }
- else
- {
- pc->next=pb;
- pc=pb;
- pb=pb->next;
- }
- }
- pc->next=pa?pa:pb;
- free(Lb);
- }
- //主函数
- void main()
- {
- LinkList L;
- Elemtype e;
- int i,a,flag;
- CreateList(L);
- PrintList(L);
- while(flag)
- {
- printf("\n请选择操作:1 插入元素 2 删除元素 3 合并两个有序表 4 结束\n");
- scanf("%d",&a);
- if(a==1){
- printf("请输入要插入元素的位置:");
- scanf("%d",&i);
- printf("请输入要插入的元素:");
- scanf("%d",&e);
- ListInsert(L,i,e);
- PrintList(L);
- }
- else if(a==2){
- printf("请输入要删除元素的位置:");
- scanf("%d",&i);
- ListDelete(L,i,e);
- PrintList(L);
- }
- else if(a==3){
- LinkList La,Lb,Lc;
- printf("\n首先建立一个有序链表La\n(采用逆位序法建立,按从大到小输入各元素)\n");
- CreateList(La);
- printf("La链表为\n");
- PrintList(La);
- printf("\n然后建立一个有序链表Lb\n(采用逆位序法建立,按从大到小输入各元素)\n");
- CreateList(Lb);
- printf("Lb链表为\n");
- PrintList(Lb);
- printf("\n合并后的Lc链表为\n");
- MergeList_L(La,Lb,Lc);
- PrintList(Lc);
- }
- else if(a==4){
- PrintList(L);
- break;
- }
- else{
- flag=0;
- printf("请输入小于4的数\n");
- }
- }
- exit(0);
- }
复制代码 编译出现如下错误
root@ubuntu:~# gcc test6.c -o test6
test6.c:17:26: error: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token
test6.c:44:28: error: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token
test6.c:64:28: error: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token
test6.c:84:27: error: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token
不能用& ??
求教具体怎么改 谢
|
|