Chinaunix首页 | 论坛 | 博客
  • 博客访问: 436880
  • 博文数量: 78
  • 博客积分: 2307
  • 博客等级: 上尉
  • 技术积分: 920
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-04 00:31
个人简介

IT老鸟,信息安全硕士。

文章分类
文章存档

2017年(2)

2012年(21)

2011年(55)

分类: C/C++

2011-06-13 09:59:49


  1. 创建.排序和打印之.空指针问题也没有改.
  2. Code:
  3. #include"stdafx.h"
  4. #include<stdlib.h>
  5. #include "stdio.h"
  6. #include <iostream>
  7.   
  8. using namespace std;
  9. typedef int Type;
  10. typedef struct DuLNode{
  11. Type data;
  12. struct DuLNode *lLink,*rLink;
  13. }DuLNode,*DuLinkList ;
  14. DuLinkList * DulList;//头结点
  15.   
  16. //尾插法建立
  17. DuLinkList CreatLinkList()
  18. {
  19. DuLinkList L=new DuLNode;
  20. L->lLink=L->rLink=0;//空表
  21. L->data=100;//测试代码
  22. DuLNode *Node,*rear=L;
  23. Type value;//数据类型
  24. cin>>value;
  25. while(value!=-1)//-1是结束标志
  26.     {
  27.     Node=new DuLNode;//??这里是否会失败?空指针?
  28.     if(0==Node) break;//??
  29.     Node->data=value;
  30.     Node->lLink=rear;
  31.     rear->rLink=Node;//L?
  32.     rear=Node;//r指向新的尾结点
  33.     cin>>value;
  34.     }
  35. rear->rLink=L;
  36. L->lLink=rear;
  37. return L;
  38. }
  39.   
  40. //排序单调不减
  41. void sortDuLNode(DuLinkList& L){
  42.     //头结点没数据
  43.     DuLinkList M=L->rLink;//标记测试 首元结点
  44.     DuLinkList rear=L->lLink;
  45.     DuLinkList j=M;
  46.     //起泡排序
  47.     while(rear!=L){
  48.         while(j!=rear){
  49.             if( (j->data)>(j->rLink->data) ) swap(j->data,j->rLink->data);
  50.                 j=j->rLink;
  51.         }
  52.         j=M;
  53.         rear=rear->lLink;
  54.     }
  55.   
  56.   
  57.   
  58. }
  59.   
  60. void swap(Type& i,Type& j){
  61. Type temp;
  62. temp=i;
  63. i=j;
  64. j=temp;
  65. }
  66.   
  67. void printDuLNode(DuLinkList L){
  68.     //头结点没数据
  69. DuLinkList M=L->lLink;//尾结点
  70. L=L->rLink;//第一个数据结点
  71. while(M!=L)
  72.     {
  73.     cout<<L->data<<endl;
  74.     L=L->rLink;
  75.     }
  76.     cout<<L->data<<endl;//打印尾结点
  77. }
  78.   
  79. int main(){
  80. DuLinkList M;
  81. //声明函数
  82. DuLinkList CreatLinkList();
  83. void swap(Type &i,Type&j);
  84. void sortDuLNode(DuLinkList& L);
  85. void printDuLNode(DuLinkList L);
  86. //
  87. M=CreatLinkList();
  88. //swap(M->rLink->data,M->rLink->rLink->data);
  89. //printDuLNode(M);//测试代码
  90.   
  91. sortDuLNode(M);
  92. printDuLNode(M);
  93.   
  94. system("PAUSE");
  95. return 0;
  96. }
  97.   
  98. ///
阅读(1319) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~