数据结构8581线性链表逆置
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
#define ERROR 0
#define OK 1
#define ElemType int
typedef struct LNode
{
int data;
struct LNode *next;
} LNode,*LinkList;
int CreateLink_LA(LinkList &L,int n)
{
LinkList p,q;
int i;
ElemType e;
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
q = (LinkList)malloc(sizeof(LNode));
q = L;
for (i=0; i { scanf("%d", &e); p = (LinkList)malloc(sizeof(LNode)); p->next=NULL; q->next=p; p->data=e; q=p; } return OK; } int LoadLink_L1(LinkList &L) { LinkList p=L->next; if(p==NULL)printf("The List is empty!"); else { printf("The List is:"); while(p!=NULL) { printf("%d ",p->data); p=p->next; } } printf("\n"); return OK; } int LoadLink_L2(LinkList &L) { LinkList p=L->next,t,q; q=p; if(p==NULL)printf("The List is empty!"); else { printf("The turned List is:"); while(p->next!=NULL) { t=p; p=p->next; } printf("%d ",p->data); while(q!=NULL) { p=L->next; while(p->next!=NULL) { if(p->next==t) { printf("%d ",t->data); t=p; break; } p=p->next; } q=q->next; } printf("%d ",L->next->data); } printf("\n"); return OK; } int main() { LinkList T1; int n; scanf("%d",&n); if(!CreateLink_LA(T1,n)) printf("ERROR\n"); if(!LoadLink_L1(T1)) printf("ERROR\n"); if(!LoadLink_L2(T1)) printf("ERROR\n"); return OK; }