用单链保存集合元素,元素由键盘输入。输入以-1结束,将所建链表打印输出。
链表结构如下图所示:
提示:
1.链表中数据元素为整型,typedef int ElemType;
2.用结构体自定义链表结构Set_LinkList ;
3.初始化链表函数init(),该函数可创建空链表L,返回L的头指针地址;
4.链表插入结点函数insert(Set_LinkList L, ElemType e),该函数可以向链表中插入集合元素e,注意集合元素不可重复;
5.链表打印输出函数display(Set_LinkList L),该函数可以遍历打印输出链表L;
6.主函数中需调用链表初始化函数init()创建空链表,用循环获取用户输入,输入数据为整数,输入以-1结束,之后将链表打印输出。
输入格式:
一组整数,以空格分隔,以-1结束
输出格式:
链表中所保存的集合数据(按照输入顺序)
输入样例:
在这里给出一组输入。例如:
9 4 0 7 1 5 6 9 8 7 9 6 5 4 1 2 3 6 5 -1
输出样例:
在这里给出相应的输出。例如:
9 4 0 7 1 5 6 8 2 3
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include <bits/stdc++.h>
using namespace std;
typedef int ElemType;
struct node{
ElemType Data;
struct node* next;
};
typedef struct node* Set_LinkList;
Set_LinkList init(){
Set_LinkList L = (Set_LinkList)malloc(sizeof(struct node));
L->Data = -1;
L->next = NULL;
return L;
}
void insert(Set_LinkList L, ElemType e){
Set_LinkList p = L->next;
if(p == NULL){
Set_LinkList newnode = (Set_LinkList)malloc(sizeof(struct node));
L->next = newnode;
newnode->Data = e;
newnode->next = NULL;
return;
}
while(p->next != NULL){
if(p->Data == e){
return;
}
p = p->next;
}
Set_LinkList newnode = (Set_LinkList)malloc(sizeof(struct node));
p->next = newnode;
newnode->Data = e;
newnode->next = NULL;
}
void display(Set_LinkList L){
Set_LinkList p = L->next;
if(p == NULL){
return;
}
while(p->next != NULL){
cout<<p->Data<<' ';
p = p->next;
}
}
int main()
{
int x = 0;
Set_LinkList L = init();
while(x != -1){
cin>>x;
insert(L , x);
}
display(L);
return 0;
}