题目描述
建立一个升序链表并遍历输出。
输入描述:
输入的每个案例中第一行包括1个整数:n(1<=n<=1000),接下来的一行包括n个整数。
输出描述:
可能有多组测试数据,对于每组数据, 将n个整数建立升序链表,之后遍历链表并输出。
示例1
输入
4 3 5 7 9
输出
3 5 7 9
思路:本题我的做法中涉及尾插法建立单链表以及遍历单链表输出data值;
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <vector> using namespace std; typedef struct LNode{ //定义单链表结点类型 int data; //数据域 struct LNode *next; //指针域 }LNode,*LinkList; LinkList L; vector<int> vec; int n,num; LinkList List_TailInsert(LinkList &L); void outPutValue(LinkList L); int main() { while(cin>>n) { for(int i=0;i<n;i++) { cin>>num; vec.push_back(num); } sort(vec.begin(),vec.end()); List_TailInsert(L); outPutValue(L); } return 0; } //尾插法建立带头结点的链表 LinkList List_TailInsert(LinkList &L) { int i=0; L=(LinkList)malloc(sizeof(LNode)); LNode *s,*r=L; //r为表尾指针 while(i<vec.size()) { s=(LNode*)malloc(sizeof(LNode)); s->data=vec[i]; r->next=s; r=s; i++; } r->next=NULL; return L; } void outPutValue(LinkList L) { LNode *s=L->next; while(s!=NULL) { cout<<s->data<<" "; s=s->next; } }