1.生成指针链表 2.对链表行翻转 3.对链表进行插入 4.对链表进行删除 5.链表元素进行排序 6.输出链表 具体代码如下: // reverseLink.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include<stdio.h> #include<malloc.h> typedef struct Node { int data; Node* next; }*LinkList;//链表结构定义 void ListPrint(Node* l)//输出链表 {//带头结点的链表 Node* pt=l->next; while(pt->next!=NULL) { printf("%d->",pt->data); pt=pt->next; } printf("%d/n",pt->data); } LinkList reverse(LinkList l) {//带头结点的链表,l为头结点位置 Node* backp=l->next; Node* pt=l->next->next; Node* frontp=pt->next; backp->next=NULL;//第一节点为指针为NULL,在头结点l后 while(frontp->next!=NULL) { pt->next=backp; backp=pt; pt=frontp; frontp=frontp->next; } pt->next=backp;//pt指向左边结点 frontp->next=pt;//最后一结点 l->next=frontp;//头结点指向最后一个结点 return l; } LinkList insert(LinkList l,int n,int num)//在链表中插入一个结点 { Node* node=(Node*)malloc(sizeof(Node)); node->data=num; node->next=NULL; Node* pt=l; for(int i=1;i<n;i++) { pt=pt->next; } node->next=pt->next; pt->next=node; return l; } LinkList deleteNode(LinkList l,int n)//在链表中删除一个结点 { Node *pt=l; for(int i=1;i<n;i++) { pt=pt->next; } Node *cp=pt->next;//cp指向当前要删除的结点 pt->next=cp->next; free(cp); return l; } LinkList sort(LinkList l) { Node* cp=l->next; Node* pt; while(cp->next!=NULL) { pt=cp->next; int temp; while(pt->next!=NULL) { if(pt->data<cp->data) { temp=cp->data; cp->data=pt->data; pt->data=temp; } pt=pt->next; } if(pt->next==NULL) { if(pt->data<cp->data) { temp=cp->data; cp->data=pt->data; pt->data=temp; } } cp=cp->next; } return l; } void freeList(Node* l)//释放链表 { Node* cp=l; Node* pt=l->next; while(pt->next!=NULL) { free(cp); cp=pt; pt=pt->next; } free(cp); free(pt); delete cp; delete pt; } int _tmain(int argc, _TCHAR* argv[]) { Node* head=(Node*)malloc(sizeof(Node)); head->next=NULL; Node* pt=head; for(int i=9;i>=0;i--) { Node* p=(Node*)malloc(sizeof(Node)); p->data=i+1; p->next=NULL; pt->next=p;//尾结点指向当前结点 pt=pt->next;//指针指向当前指向的尾结点 } ListPrint(head); head=reverse(head); ListPrint(head); LinkList l=head; //使用链指针 l=reverse(l); ListPrint(l); l=insert(l,8,0); l=insert(l,8,88); ListPrint(l); //l=deleteNode(l,8); //ListPrint(l); printf("对链表元素进行排序.../n"); l=sort(l); ListPrint(l); freeList(head); getchar(); return 0; }