- // linkedlist.cpp : 定义控制台应用程序的入口点。
- //
- #include "stdafx.h"
- #include <stdio.h>
- #include <stdlib.h>
- #include <assert.h>
- typedef struct node
- {
- int data;
- struct node* next;
- }Node, *PNode;
- PNode newNode(int data)
- {
- PNode p = (PNode)malloc(sizeof(Node));
- assert(p != NULL);
- p->data = data;
- p->next = NULL;
- return p;
- }
- // PNode tail(PNode head, int *length)
- // {
- // assert( head != NULL);
- // PNode p;
- // p = head;
- // *length = 0;
- // while ( p->next != NULL )
- // {
- // p = p->next;
- // (*length)++;
- // }
- // return p;
- // }
- PNode create()
- {
- PNode p= newNode(0);
- return p;
- }
- int insert(PNode head, PNode s)
- {
- assert (head != NULL && s != NULL);
- PNode prev;
- prev = head;
- int i=0;
- while ( prev->next != NULL )
- {
- prev = prev->next;
- }
- prev->next = s;
- s->next = NULL;
- return i;
- }
- void del(PNode head)
- {
- assert (head != NULL);
- PNode p, prev;
- p = prev = head;
- while ( p->next != NULL )
- {
- prev = p;
- p = p->next;
- }
- free(p);
- p = NULL;
- prev->next = NULL;
- }
- PNode inverse(PNode head)
- {
- assert (head != NULL);
- PNode cur, prev, behind;
- cur = prev = behind = head->next;
- behind = cur->next;
- head->next = NULL;
- cur->next = NULL;
- while (behind->next != NULL)
- {
- prev = cur;
- cur = behind;
- behind = behind->next;
- cur->next = prev;
- }
- behind->next = cur;
- PNode newhead = newNode(0);
- newhead->next = behind;
- return newhead;
- }
- int length(PNode head)
- {
- assert (head != NULL);
- int length=0;
- PNode p = head;
- while (p->next != NULL)
- {
- p = p->next;
- length++;
- }
- return length;
- }
- void print(PNode head)
- {
- assert(head != NULL);
- PNode p = head->next;
- printf("length: %d/n", length(head));
- while (p != NULL)
- {
- printf("%d ", p->data);
- p = p->next;
- }
- printf("/n");
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- PNode head;
- head = create();
- int i;
- for (i=0; i<10; i++)
- {
- insert(head, newNode(i));
- }
- del(head);
- head = inverse(head);
- print(head);
- return 0;
- }
把_tmain换成main就可以用gcc编译了.