链表创建 然后逆序 然后输出 上机测试题

//============================================================================
// Name        : mm.cpp
// Author      : sfe
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
typedef struct tagListNode
{
    int value;
    struct tagListNode *next;
}ListNode;
ListNode *CreatList(const int *NumBuffer,const int &iNodeNum)
{
ListNode *pListHead ;
ListNode *pListPP ;
for(int i = 0 ;i < iNodeNum; i++)
{
ListNode * ListNodeTemp = new ListNode();//(ListNode *)malloc(sizeof(ListNode));
ListNodeTemp ->value = NumBuffer[i];
ListNodeTemp->next = NULL;
if(i == 0){
pListHead =  ListNodeTemp;
}
else
pListPP->next = ListNodeTemp;
pListPP = ListNodeTemp;
}
// std::cout<<"After CreatList"<<std::endl;
//   while(NULL != pListHead)
//   {
//   std::cout<<pListHead->value<<std::endl;
//   pListHead = pListHead->next;
//   }


return pListHead;
}
ListNode * ReversetList(ListNode *pListNodeHead)
{
ListNode *pListHead ;
ListNode * ListNodeTemp = NULL, *ListNodeFormer = pListNodeHead,
 *ListNodeAfter = pListNodeHead->next;
while(ListNodeAfter != NULL)
{
ListNodeTemp = ListNodeAfter->next;
ListNodeAfter->next = ListNodeFormer;
ListNodeFormer =  ListNodeAfter;
ListNodeAfter = ListNodeTemp;
}
pListNodeHead->next = NULL;
pListNodeHead = ListNodeFormer;
pListHead = pListNodeHead;


// std::cout<<"After ReversetList"<<std::endl;
// while(NULL != pListNodeHead)
// {
// std::cout<<pListNodeHead->value<<std::endl;
// pListNodeHead = pListNodeHead->next;
// }
return pListHead;
}
int main()
{
string strInput ;
string strTemp("");
std::cin>>strInput;
int iNum = 0;
int j = 0;
int iLength = strInput.length();
for(int i =0 ; i < iLength ; i++)
{
if(strInput[i] == ',')
iNum++;
}
iNum++;
int *NumBuffer = new int[iNum];
    for(int i = 0 ;i < iLength ;i++)
    {
    if(strInput[i] == ',' )
    {
    NumBuffer[j++] = atoi(strTemp.c_str());
    strTemp = "";
    //std::cout<<NumBuffer[j-1]<<std::endl;
    }
    else
    strTemp += strInput[i];
    if((i+1) == iLength)
    {
    NumBuffer[j++] = atoi(strTemp.c_str());
    }
    }
    ListNode * pListNodeHead = CreatList(NumBuffer,iNum);
    pListNodeHead = ReversetList(pListNodeHead);
    //ListNode * ListNodeTemp  = pListNodeHead;
	while(NULL != pListNodeHead)
	{
	  if(pListNodeHead->next != NULL)
	  std::cout<<pListNodeHead->value<<",";
	  else
	  std::cout<<pListNodeHead->value;
	  delete pListNodeHead;
	  pListNodeHead = pListNodeHead->next;
	}
  delete[]NumBuffer;
  return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值