【链表】逆序输出
来源:互联网 发布:域名劫持转发教程 编辑:程序博客网 时间:2024/06/06 07:19
#include <iostream>#include <string>using namespace std;#define maxsize 100#define null 0typedef struct node{int data;struct node * next;}node, *linklist;int strtonum(string s){int i=0,len=s.length();int num=0;int n=1;for(i=len-1;i>=0;i--){num=num+(s[i]-'0')*(n);n=n*10;}return num;}int main(){string s;getline(cin,s);int a[maxsize]={0};int pos[maxsize]={0};int k=0;int i=0,len=s.length();for(i=0;i<len;i++){if(s[i]==','){pos[k]=i;k++;}}a[0]=strtonum(s.substr(0,pos[0]));for(i=0;i<k-1;i++){a[i+1]=strtonum(s.substr(pos[i]+1,pos[i+1]-pos[i]-1));}a[i+1]=strtonum(s.substr(pos[i]+1,len-1-pos[i]));int lena=k+1;linklist phead;linklist p;linklist r=(linklist)malloc(sizeof(struct node));r->next=null;phead=r;for(i=0;i<lena;i++){p=(linklist)malloc(sizeof(struct node));p->data=a[i];p->next=r->next;r->next=p;}linklist pw=phead;for(i=0;i<lena-1;i++){pw=pw->next;cout<<pw->data<<",";}cout<<pw->next->data<<endl;return 0;}
逆序链表输出
描述:
输入一个单向链表,将链表逆序后输出各结点的值。
链表结点结构定义如下:
typedef struct tagListNode
{
int value;
struct tagListNode *next;
}ListNode;
运行时间限制: 60 Sec
内存限制: 256 MByte
输入:
顺序输入链表的各结点,用逗号(",")作为结点数据的分隔符;
例如:链表1->2->3->4->5,输入为:"1,2,3,4,5"
输出:
逆序后链表的各结点,用逗号(",")作为结点数据的分隔符;
例如上述链表逆序后为5->4->3->2->1,输出为:"5,4,3,2,1"
样例输入:
1,2,3,4,5
样例输出:
5,4,3,2,1
问题分析:
最简单的当然是头插法,输入1,2,3,4,5,
从head点开始输出,恰好就是5,4,3,2,1
但本题的问题是,输入是用逗号“,”隔开的,cin输入是识别不了单个的,所以只能用string类型读出串,然后借用逗号“,”标志,分割出字符,最后再创建链表【头插法】,输出即可。
代码:
0 0
- 【链表】逆序输出
- 链表——逆序输出
- 逆序输出
- 逆序输出
- 逆序输出
- 逆序输出
- 逆序输出
- 逆序输出
- 逆序输出
- 逆序输出
- 逆序输出
- 逆序输出
- 逆序输出
- 逆序输出
- 【链表】逆序输出单链表(单链表反转)
- 字符串逆序&字符串逆序输出
- 单链表逆序或者逆序输出
- HTML 逆序输出 输出引号
- 1069 -- A+B(6)
- 黑马程序员 反射
- linux的I/O多路转接select的fd_set数据结构和相应FD_宏的实现分析
- 1070 -- A+B(7)
- Windows风格的Loading动画Android实现(3)
- 【链表】逆序输出
- 1071 -- A+B(8)
- CSU 1631 Facility Locations
- 1072 -- Sum Problem
- 2015-0828-osg学习历程3
- linux驱动调试技术
- 空字符 空格字符(字符) 空字符串 NULL的区别
- 原型模式
- 1073 -- Let the Balloon Rise