1 个回答
提问:编译有问题大佬帮帮我
#include<stdio.h>#include<malloc.h>#define ERROR 0#define OK 1typedef int ElemType; /*定义表元素的类型*/typedef struct LNode; typedef struct LNode{ /*线性表的循环单链表存储*/ ElemType data; struct LNode *next;}LNode,*LinkList;LinkList CreateList(int n); /*建立带头结点的循环单链表*/void PrintList(LinkList L); /* 输出带头结点的单链表的所有元素 */int GetElem(LinkList L,int i,ElemType &e); /* 在带头结点的单链表L中根据序号i获取元素的值,用e返回L中的i个数据元素的值 */LinkList CreateList(int n){ LNode *p,*q,*head; int i; head=(LinkList)malloc(sizeof(LNode)); head->next=head; p= head ; for(i=0;i<n;i++){ q=(LinkList)malloc(sizeof(LNode)); printf("input data %i:",i+1); scanf("%d", &q->data ); /*输入元素值*/ p->next=q; /*新结点连在表末尾*/ p=q;}q->next= NULL ; return head;}/*CreateList*/void PrintList(LinkList L){ LNode *p; p=L->next; /*p指向单链表的第1个元素*/ while(p!= NULL ){ printf("%5d %d %d\n",p,p->data,p->next); p = p->next ; }}/*PrintList*/int GetElem(LinkList L,int i,ElemType &e){ LNode *p;int j=1; p=L->next; while(p!=L &&j<i){ p=p->next;j++; } if( !p||j>1 ) return ERROR; e= p->data ; return OK;}/*GetElem*/int main(){ int n,i;ElemType e; LinkList L=NULL; /*定义指向单链表的指针*/ printf("please input n:"); /*输入单链表的元素个数*/ scanf("%d",&n); if(n>0){ printf("\n1-Create LinkList:\n"); L=CreateList(n); printf("\n2-Print LinkList:\n"); PrintList(L); printf("\n3-GetElem from LinkList:\n"); printf("input i="); scanf("%d",&i); if(GetElem( L,i,e )) printf("No%i is %d",i,e); else printf("not exists"); }else printf("ERROR"); return 0;}
网友回答:
你的程序编译没有任何问题,且一般测试结果也是正确的

可能的问题是
上面的程序是C++的,你可能建错工程或用错编译器了