#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; }本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报