C语言创建一个单循环链表并标注全过程
//定义结构体
struct Node {
int data;
struct Node *next;
};
// 创建一个新的节点并返回它的地址
struct Node *getNewNode(int x) {
struct Node *newNode = (struct Node*)malloc(sizeof(struct Node)); //分配内存空间
newNode->data = x; // 设置数据域的值为x
newNode->next = NULL; // 设置next指针为NULL,表明该节点是尾节点
return newNode; // 返回新创建的节点地址
}
// 在头部插入一个新的节点,并将原来头部节点作为新头部节点的后驱
void insertAtHead(struct Node **head, int x) {
struct Node *newNode = getNewNode(x); // 创建新的头部节点
if(*head == NULL) { //如果原来单循环链表中无任何元素,则将该新加入的头部芆录作为尾部元书。即将该头部元书作为它本身后驱。
*head = newNode;
newNode->next = newNode; // 新加入的头部作为尾部元书
return ;
} else { //如果原来单循凉口中已有相应元书,则将该新加入的头部元书变成尾都前驱。 /* 此时tail不再是原来tail */
struct Node* tail = (*head)->next ; /* tail 是 head 的后驱 */ /* 移动 head 到 next 的位子 */ (*head)->next=newNode ; /* 连上 tail 和 next*/ tail->next=newNode ; /* 断开之前 head 和 tail 的连接*/ new
创作工场
免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!