采用了带头节点的链表。
这一段时间对C指针和内存了解了很多,写个链表的基本操作。
#include#include #include struct node { int data; struct node *pNext; // 指向下一个节点的指针,指向下一个节点的整体。 }; typedef struct node Node; Node * create_node(int data) { Node *p1 = (Node *)malloc(sizeof(Node)); // 1创建一个节点 if (NULL == p1) { printf("malloc errn"); return NULL; } // 2 清理新空间 bzero(p1,sizeof(Node)); // 新节点清0 // 3 填充节点 p1->data = data; p1->pNext = NULL; // 将来要指向新节点的首地址 return p1; } // 尾插 void insert_tail(Node *pH,Node *new) { int count = 0; // 分两步插入 Node *p = pH; // 1 先找到链表中最后节点 while (NULL != p->pNext) { p = p->pNext; count++; } // 2将新节点插入到最后一个节点尾部 p->pNext = new; pH->data = count + 1; } // 头插 void insert_head(Node *pH,Node *new) { new->pNext = pH->pNext; pH->pNext = new; pH->data += 1; } // 先移动和先输出区别:p = p->pNext;先输出不能输出链表最后一个节点。 void traversal(Node *pH) { Node *p = pH; while ( NULL != p->pNext)// { // 先移动和先输出区别:p = p->pNext;先输出不能输出链表最后一个节点。 //printf("%dn",p->data); //p = p->pNext; p = p->pNext; printf("%dn",p->data); } } // 删除节点:是尾节点和非尾结点 int delete_node(struct node *pH,int data) { Node *p = pH; Node *preP = NULL; int rt = 0; while (NULL != p->pNext) { preP = p; p = p->pNext; if (p->data == data) { // 找到的是非尾节点 if (NULL != p->pNext) { preP->pNext = p->pNext; free(p); } else { preP->pNext = NULL; free(p); } return 0; // 找到的尾部节点 } } pH->data -= 1; } int reverse(Node *pH) { Node *p = pH->pNext; Node *pPre = NULL; if (pH->pNext == NULL || p == NULL) { printf("只有一个节点或者为空n"); return -1; } while (NULL != p->pNext) { // 如果是第一个节点,头插后将其置空 pPre = p->pNext; if (p == pH->pNext) { p->pNext = NULL; p = pPre; } else // 非第一个节点,进行前插 { p->pNext = pH->pNext; pH->pNext = p; } p = pPre; } insert_head(pH,p); } int main() { Node *pHeader = create_node(0); // 创建一个新节点 Node *n1 = create_node(11); Node *n2 = create_node(12); Node *n3 = create_node(13); insert_tail(pHeader,n1); insert_tail(pHeader,n2); insert_tail(pHeader,n3); // 使用PHeader访问链表第一个节点: traversal(pHeader); //delete_node(pHeader,12); //printf("删除后]n"); //traversal(pHeader); printf("逆序后n"); reverse(pHeader); traversal(pHeader); return 0; }



