链表的head也为node类型
我的理论是,链表的head也可以为node类型,写了一些代码,记录如下
// keshan.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <stdio.h> #include <malloc.h> #define NULL 0 #define LEN sizeof(struct Node) struct Node{ int value; Node * next; }; //打印链表 void print_link(Node *head){ Node *p = head; printf("%d\n",head->value); while(p->next!=NULL){ p = p->next; printf("%d\n",p->value); } } int _tmain(int argc, _TCHAR* argv[]) { //创建 Node * head = (Node *) malloc(LEN); head->value = 0; //增加 Node *p1 = (Node *) malloc(LEN); //增加一个 p1->value = 1; head->next = p1; Node *p2 = (Node *) malloc(LEN);//再增加一个 p2->value = 2; p1->next = p2; p1 = (Node *) malloc(LEN); //再增加一个 p1->value = 3; p2->next = p1; p1->next = NULL; //遍历查询 printf("遍历查询\n"); Node * p = head; printf("%d\n",p->value); do{ p = p->next; printf("%d\n",p->value); }while(p->next != NULL); //查询第2个,第一个即为0 printf("遍历第2查询\n"); p = head; for(int i=1;i<3;i++){ p = p->next; } printf("%d\n",p->value); //修改第3个,数值改为30 printf("修改第3个\n"); p = head; for(int i=0;i<3;i++){ p = p->next; } p->value = 30; print_link(head); //删除 getchar(); return 0; }