|
发表于 2018-3-23 12:28:08
|
显示全部楼层
本帖最后由 风过无痕丶 于 2018-3-23 12:31 编辑
- #pragma warning(disable : 4996)
- #include <stdio.h>
- #include <stdlib.h>
- #include <malloc.h>
- typedef struct Node
- {
- int data;
- struct Node *next;
- }NODE, *linklist;
- linklist initlist(void)
- {
- linklist pHead = (linklist)malloc(sizeof(NODE));
- if (pHead == NULL)
- {
- printf("无法分配空间,初始化失败。");
- exit(-1);
- }
- printf("初始化成功\n");
-
-
- return pHead;
- }
- void creatlist(linklist L)
- {
- int i, val, n;
- printf("请问您想输入多少个元素:");
- scanf("%d", &n);
-
- linklist pTail = L;
- pTail->next = NULL; // 让它指向尾节点~
- for (i = 0; i < n; i++)
- {
- printf("请输入第%d个元素",i + 1);
- scanf("%d", &val);
- // p = (linklist)malloc(sizeof(NODE)); // 你这里准备直接覆盖吗?
-
- linklist pNew = (linklist)malloc(sizeof(NODE));
- // 这里在检查一下是不是节点都生成成功了!
- if (pNew == NULL) {
- printf("空间分配失败,程序结束!\n");
- exit(-1);
- }
- pNew->data = val;
- pTail->next = pNew;
- pNew->next = NULL;
- pTail = pNew;
-
- /*
- printf("请输入第%d个元素", j + 1);
- scanf("%d ", &p->data);
- p->next = L->next;
- L->next = p;
- */ // 按照我的理解。 这里应该造一个节点赋值一个节点
- }
- }
- void seelist(linklist L)
- { // 这里是输出函数? 那返回一个值回去干什么啊。。 没意义啊~
- int k = 0;
- linklist p = NULL;
- p = L->next;
- while (p != NULL)
- {
- printf("%d ", p->data);
- p = p->next;
- //p++; 这里的P++是什么操作?
- }
- /*
- if (k == 0) 这里的K又代表什么,他呗初始化了0 这一条是肯定会被运行的~为什么会让他来判断链表是不是为空~
- {
- printf("链表为空。");
- return -1;
- }
- return 0;
- */
- }
- int main()
- {
- linklist L = NULL;
- L = initlist();
- creatlist(L);
- seelist(L);
- system("pause");
- return 0;
-
- }
复制代码
你何必写那么多层指针为难自己呢~linklist本来就是指针类型了~就没必要再取地址了~你再取个地址,就要解一层~ |
|