昨天的插入貌似应该有&不过我给的参数是头结点的又没有关系.纠结一下.明天看看
创建.排序和打印之.空指针问题也没有改.
- #include"stdafx.h"
- #include<stdlib.h>
- #include "stdio.h"
- #include <iostream>
- using namespace std;
- typedef int Type;
- typedef struct DuLNode{
- Type data;
- struct DuLNode *lLink,*rLink;
- }DuLNode,*DuLinkList ;
- DuLinkList * DulList;//头结点
- //尾插法建立
- DuLinkList CreatLinkList()
- {
- DuLinkList L=new DuLNode;
- L->lLink=L->rLink=0;//空表
- L->data=100;//测试代码
- DuLNode *Node,*rear=L;
- Type value;//数据类型
- cin>>value;
- while(value!=-1)//-1是结束标志
- {
- Node=new DuLNode;//??这里是否会失败?空指针?
- if(0==Node) break;//??
- Node->data=value;
- Node->lLink=rear;
- rear->rLink=Node;//L?
- rear=Node;//r指向新的尾结点
- cin>>value;
- }
- rear->rLink=L;
- L->lLink=rear;
- return L;
- }
- //排序单调不减
- void sortDuLNode(DuLinkList& L){
- //头结点没数据
- DuLinkList M=L->rLink;//标记测试 首元结点
- DuLinkList rear=L->lLink;
- DuLinkList j=M;
- //起泡排序
- while(rear!=L){
- while(j!=rear){
- if( (j->data)>(j->rLink->data) ) swap(j->data,j->rLink->data);
- j=j->rLink;
- }
- j=M;
- rear=rear->lLink;
- }
- }
- void swap(Type& i,Type& j){
- Type temp;
- temp=i;
- i=j;
- j=temp;
- }
- void printDuLNode(DuLinkList L){
- //头结点没数据
- DuLinkList M=L->lLink;//尾结点
- L=L->rLink;//第一个数据结点
- while(M!=L)
- {
- cout<<L->data<<endl;
- L=L->rLink;
- }
- cout<<L->data<<endl;//打印尾结点
- }
- int main(){
- DuLinkList M;
- //声明函数
- DuLinkList CreatLinkList();
- void swap(Type &i,Type&j);
- void sortDuLNode(DuLinkList& L);
- void printDuLNode(DuLinkList L);
- //
- M=CreatLinkList();
- //swap(M->rLink->data,M->rLink->rLink->data);
- //printDuLNode(M);//测试代码
- sortDuLNode(M);
- printDuLNode(M);
- system("PAUSE");
- return 0;
- }
- ///