user-0 提问: 一道数据结构的题

回复:
user: user-0
content: 可是必须要输入回车，不能输入其他字母呢

user: user-1
content: 引用 7 楼 Robinhood169 的回复：不对啊，输入回车是无法终止程序的，输入一个字母或是符号倒是可以你如果知道scanf的返回值是什么，就知道我的*回车是什么意思了，scanf如果接收数据不正确时就返回0，所以你想停止输入时只要输入非数字就可以了。

user: user-2
content: 引用 7 楼 Robinhood169 的回复:不对啊，输入回车是无法终止程序的，输入一个字母或是符号倒是可以 他说的是输入 * 回车。或者输入一个非数字的字符

user: user-0
content: 不对啊，输入回车是无法终止程序的，输入一个字母或是符号倒是可以

user: user-1
content: 引用 2 楼 Robinhood169 的回复:不好意思老哥，我想问的是如何建立链表，比如说我该怎么输入11 22 33 44 55后保证他是一个独立的链表，不是怎么求交集  上面main方法错了，改一下 typedef struct node {     int data;     node *next; } Node;  Node* createLink() {     Node *p=NULL, *L=NULL;     int n=0;     while (scanf("%d", &n) == 1) { //输入非数字则退出循环         if (L==NULL) {             p = L = (Node*)malloc(sizeof(Node));         } else {             p->next = (Node*)malloc(sizeof(Node));             p = p->next;         }         p->data = n;         p->next = NULL;     }     return L; } int main() {     Node *LA = createLink();     Node *p = LA;     while (p!=NULL) {         printf("%d ", p->data);         LA = p->next;         free(p);         p = LA;     }     return 0; }  程序运行后输入 11 22 33 44 55 *回车

user: user-1
content: 引用 2 楼 Robinhood169 的回复:不好意思老哥，我想问的是如何建立链表，比如说我该怎么输入11 22 33 44 55后保证他是一个独立的链表，不是怎么求交集 原来你是想创建链表啊  typedef struct node {     int data;     node *next; } Node;  Node* createLink() {     Node *p=NULL, *L=NULL;     int n=0;     while (scanf("%d", &n) == 1) { //输入非数字则退出循环         if (L==NULL) {             p = L = (Node*)malloc(sizeof(Node));         } else {             p->next = (Node*)malloc(sizeof(Node));             p = p->next;         }         p->data = n;         p->next = NULL;     }     return L; } int main() {     Node *LA = createLink();     Node *p = LA;     while (p!=NULL) {         printf("%d ", p->data);         p = p->next;     }     free(LA);     return 0; }  程序运行后输入 11 22 33 44 55 *回车

user: user-0
content: 不好意思，我刚刚开始学数据结构，还没有做过一些题目。那个题干只给了我一串链表的数据，我也想过在建立链表的函数中输入节点数，但我在建立链表的函数中输入了节点数，会算在输入的数据里面吗？如果算，那会不会与他给出的条件相冲突呢？

user: user-3
content: 创建链表，你可以创建之前确定链表的节点个数呢 void traverse_list(LinkList L) {     LinkList p = L->next;      while(NULL != p) {         printf("%d ", p->data);         p = p->next;     }     printf("\n");     return; }  void create_list(LinkList *L) {     int i;     int n;     int val;      *L = (LinkList)malloc(sizeof(LNode));     LinkList pTail = *L;      pTail->data = 0;     pTail->next = NULL;      printf("请输入您需要生成的结点个数：");     scanf("%d", &n);      printf("输入数据\n");     //srand(time(0));     for(i = 0; i < n; i++) {         scanf("%d", &val);         //val = rand() % 1000;         LinkList pNew = (LinkList)malloc(sizeof(LNode));         pNew->data = val;         pNew->next = NULL;         pTail->next = pNew;         pTail = pNew;     }  } 比如，带哨兵节点的链表～

user: user-0
content: 不好意思老哥，我想问的是如何建立链表，比如说我该怎么输入11 22 33 44 55后保证他是一个独立的链表，不是怎么求交集

user: user-1
content: for example  Node *retains(Node *LA, Node *LB) {     Node *p, *LC=NULL;     Node *p1 = LA, *p2 = LB;     while (p1 != NULL && p2 != NULL) {         if (p1->data == p2->data) { //如果LA=LB，保存交集元素             if (LC == NULL) {                 LC = p =  (Node*)malloc(sizeof(Node));                 p->data = p1->data;                 p->next = NULL;             } else {                 p->next =  (Node*)malloc(sizeof(Node));                 p = p->next;                 p->data = p1->data;                 p->next = NULL;             }             p1 = p1->next;             p2 = p2->next;         } else if (p1->data < p2->data) { //否则如果LA小则移动LA指针指向下一个元素             p1 = p1->next;         } else { //如果LB小则移动LB指针指向下一个元素             p2 = p2->next;         }     }     return LC; }