#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct Node{ int data; int len; struct Node *pNext;}NODE,*PNODE;
PNODE creat_list(int len)//创建链表, {
int i; int val;
PNODE pHead = (PNODE)malloc(sizeof(NODE));
if (NULL == pHead){
printf("分配失败, 程序终止!\n"); exit(-1);} PNODE pTail = pHead;
pTail->pNext = NULL;
for (i=0; i<len; ++i){scanf("%d", &val); PNODE pNew = (PNODE)malloc(sizeof(NODE)); if (NULL == pNew) { printf("分配失败, 程序终止!\n"); exit(-1);} pNew->data = val;
pTail->pNext = pNew;
pNew->pNext = NULL;
pTail = pNew; }return pHead;}
void traverse_list(PNODE pHead,int len)//遍历链表{ PNODE p = pHead->pNext; int count=1; while(NULL!=p){
if(count==len) { printf("%d",p->data); } else { printf("%d ",p->data); } p = p->pNext; count++; } printf("\n"); return;}
int main(){ int len; while(~scanf("%d",&len)) { PNODE pHead=NULL;//等价于struct Node *pHead= NULL //创建链表creat_list2(); pHead=creat_list(len);//创建一个非循环单链表,并将其该链表的头结点指向PHead traverse_list(pHead,len);//遍历整个链表 free(pHead); } return 0;}
如何将顺序表改为逆序表
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- qfl_sdu 2022-04-19 11:53关注
运行结果及代码如下:
代码:
#include<stdio.h> #include<malloc.h> #include<stdlib.h> typedef struct Node { int data; int len; struct Node* pNext; }NODE, * PNODE; PNODE creat_list(int len)//创建链表, { int i; int val; PNODE pHead = (PNODE)malloc(sizeof(NODE)); if (NULL == pHead) { printf("分配失败, 程序终止!\n"); exit(-1); } PNODE pTail = pHead; pTail->pNext = NULL; for (i = 0; i < len; ++i) { scanf("%d", &val); PNODE pNew = (PNODE)malloc(sizeof(NODE)); if (NULL == pNew) { printf("分配失败, 程序终止!\n"); exit(-1); } pNew->data = val; pTail->pNext = pNew; pNew->pNext = NULL; pTail = pNew; } return pHead; } void traverse_list(PNODE pHead, int len)//遍历链表 { PNODE p = pHead->pNext; int count = 1; while (NULL != p) { if (count == len) { printf("%d", p->data); } else { printf("%d ", p->data); } p = p->pNext; count++; } printf("\n"); return; } //逆序 void reverse(PNODE pHead) { PNODE p, t,q; p = pHead->pNext; if (p == 0 || p->pNext == 0) return; t = p->pNext; p->pNext = 0; while (t) { pHead->pNext = t; q = t->pNext; t->pNext = p; p = t; t = q; } } int main() { int len; while (~scanf("%d", &len)) { PNODE pHead = NULL;//等价于struct Node *pHead= NULL //创建链表creat_list2(); pHead = creat_list(len);//创建一个非循环单链表,并将其该链表的头结点指向PHead traverse_list(pHead, len);//遍历整个链表 //逆序 printf("\n逆序后:"); reverse(pHead); traverse_list(pHead, len);//遍历整个链表 free(pHead); } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥500 火焰左右视图、视差(基于双目相机)
- ¥100 set_link_state
- ¥15 虚幻5 UE美术毛发渲染
- ¥15 CVRP 图论 物流运输优化
- ¥15 Tableau online 嵌入ppt失败
- ¥100 支付宝网页转账系统不识别账号
- ¥15 基于单片机的靶位控制系统
- ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
- ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
- ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本