带头结点的单链表就地逆置(10 分)
2017-12-18 17:07
274 查看
代码都不会写了==
//库函数头文件包含 #include<stdio.h> #include<malloc.h> #include<stdlib.h> #include<iostream> //函数状态码定义 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 using namespace std; typedef int Status; typedef int ElemType; //假设线性表中的元素均为整型 typedef struct LNode { ElemType data; struct LNode *next; }LNode,*LinkList; Status ListCreate_L(LinkList &L,int n) { LNode *rearPtr,*curPtr; //一个尾指针,一个指向新节点的指针 L=(LNode*)malloc(sizeof (LNode)); if(!L)exit(OVERFLOW); L->next=NULL; //先建立一个带头结点的单链表 rearPtr=L; //初始时头结点为尾节点,rearPtr指向尾巴节点 for (int i=1;i<=n;i++){ //每次循环都开辟一个新节点,并把新节点拼到尾节点后 curPtr=(LNode*)malloc(sizeof(LNode));//生成新结点 if(!curPtr)exit(OVERFLOW); scanf("%d",&curPtr->data);//输入元素值 curPtr->next=NULL; //最后一个节点的next赋空 rearPtr->next=curPtr; rearPtr=curPtr; } return OK; } void ListReverse_L(LinkList &L) { LNode *p,*q; p=L->next; L->next=NULL; while(p) { q=p->next; p->next=L->next; L->next=p; p=q; } } void ListPrint_L(LinkList &L){ //输出单链表 LNode *p=L->next; //p指向第一个元素结点 while(p!=NULL) { if(p->next!=NULL) printf("%d ",p->data); else printf("%d",p->data); p=p->next; } } int main() { LinkList L; int n; scanf("%d",&n); if(ListCreate_L(L,n)!= OK) { printf("表创建失败!!!\ 91bd n"); return -1; } ListReverse_L(L); ListPrint_L(L); return 0; } /* 请在这里填写答案 */
相关文章推荐
- PTA 带头结点的单链表就地逆置(10 分)
- 带头结点单链表的就地逆置
- 带头结点的单链表就地逆置
- PTA(数据结构)-带头结点的单链表就地逆置
- 带头结点的单链表实现就地逆置的更优方法
- 6-1 带头结点的单链表就地逆置
- 对带头结点的单链表实现就地逆置的算法分析
- 带头结点的单链表就地逆置
- 带头结点的单链表就地逆置
- 单链表的就地逆置 (单链表带头结点)(某公司校园招聘面试试题)
- 就地逆置带头结点的单链表
- 带头结点的单链表就地逆置
- 对一个不带头结点的单链表进行逆置
- 从键盘读入n个整数(升序),请编写算法实现: 建立带表头结点的单链表; 显示单链表,(形如:H->10->20->30->40); 在有序单链表中插入新的数据元素x; 将单链表就地逆
- 将链表L就地逆置,即利用原表各结点的空间实现逆置
- 将带头结点的单链表利用原结点空间将其逆置
- 带头结点的链表的逆置
- 不带头结点的链表操作及其逆置
- 基于链表:逆置带头结点的单链表
- 带头结点的单链表的逆置