递增的整数序列链表的插入

xiaoxiao2021-02-28  138

习题 2.4 递增的整数序列链表的插入

今天做了浙大 PAT 数据结构的一道链表题,在此过程中进行了以下几个问题的研究,不过仍然有些疑惑:

链表结构体构造链表节点链接链表节点插入 typedef 的使用就是给变量起别名将指针作为参数进行传递时,不需要用或者 & 吗???????,今天做的链表指针传递的时候都没有使用 ,不过编译通过了,而 mooc 上课件里却使用了 * 不要贪图省事就将多步操作合并到一起,这样做如果出错不好找

代码块

/*习题 2.4 递增的整数序列链表的插入*/ #include <stdio.h> #include <stdlib.h> typedef int ElementType; typedef struct Node *PtrToNode; struct Node { ElementType Data; PtrToNode Next; }; typedef PtrToNode List; List Read(); /* 细节在此不表 */ PtrToNode CreatNewNode();/*创建新节点*/ void Print(List L); /* 细节在此不表 */ List Insert(List L, ElementType X); int main() { List L; ElementType X; L = Read(); scanf("%d", &X); L = Insert(L, X); Print(L); return 0; } List Read() { int N, i; PtrToNode LBegin, newNode, preNode, tmp; scanf("%d", &N); LBegin = CreatNewNode(); preNode = LBegin; while (N) { newNode = CreatNewNode(); scanf("%d", &i); preNode->Data = i;/*使用&i 对Data进行中转,可以直接使用&newnode->data吗???*/ preNode->Next = newNode; preNode = newNode; newNode->Next = NULL;/*链接各个节点*/ N--; } return LBegin; } List CreatNewNode() { List newNode; newNode = (List)malloc(sizeof(struct Node)); return newNode; } List Insert(List L, ElementType X) { PtrToNode tmp, pre, NodeToInsert; pre = L; NodeToInsert = CreatNewNode(); NodeToInsert->Data = X; if (X < L->Data) { /*数据要插入在链表之前*/ NodeToInsert ->Next = L; return NodeToInsert; } while (pre) { if (X > pre->Data) { if (X <= pre->Next->Data) {/*插入在链表中*/ NodeToInsert->Next = pre->Next; pre->Next = NodeToInsert; return L; } else if (pre->Next == NULL) {/*插到链尾*/ pre->Next = NodeToInsert; return L; } } pre = pre->Next; } } void Print(List L) { PtrToNode pre; pre = L; while (pre->Next) { printf("%d ", pre ->Data); pre = pre->Next; } }
转载请注明原文地址: https://www.6miu.com/read-27787.html

最新回复(0)