| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 467 人关注过本帖
标题:烂程序,望各位帮改
只看楼主 加入收藏
tornadozheng
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-10-22
收藏
 问题点数:0 回复次数:4 
烂程序,望各位帮改

本想做个可以任意输入数字链表逆序,不过写到现在还没搞得定(汗||||)

不是我写的,只是把某人的程序修改,不过改着改着改成这样子,达不到我想写的(狂汗)

帮帮忙,各位高人



#include<iostream.h>

struct {Node;
int Data;}

class LinkList
{
private:

Node*p;
Node*temp;
Node*head;
Node*tail;
public:
List(int i=10);
~List(void);

void Initlist(LinkList L);
void setLinkList(LinkList L);
void printList(LinkList L);
void NZLinkList(LinkList L);//逆置
void menu();
void Operate();

int main()
{
Operate()
return 0;
}

LinkList::LinkList(int i=10)
{
head=tail=NULL;
}

void LinkList::InitLinkList()
{
LinkList temp,head,tail;
if(L->next == NULL)
{
L->data = 0;
}
else
{
head= L;
tail = L->next;
while(tail != NULL)
{
temp = tail;
tail = temp->next;
free(temp);
}
L->data = 0;
L->next = NULL;
}
}


LinkList::setLinkList()
{

int a;
cout << "请输入要插入的数据(当遇到0时,返回):" << endl;
cin >> a;
L->data = a;
while(a != 0)
{
L->next = (LinkList)malloc(sizeof(LNode));
L = L->next;
cin >> b;

L->data = b;
}
L->next = NULL;
}


LinkList::printList()
void PrintList(LinkList L)
{
int n;
while(L != NULL)
{
if(n%10 == 0)
{
printf("\n");
}
printf("%7d",L->data);
L = L->next;
n++;
}
printf("\n");
}


LinkList::NZLinkList()

{
if(L->next == NULL)return;
LinkList back,tail;
tail = L->next;
back = L;
L->next = NULL;
while(tail->next != NULL)
{
L = tail;
tail = L->next;
L->next = back;
back = L;
}
tail->next = back;
L = tail;
// return tail;
}

LinkList::menu()
{
cout << "1.创建链表." << endl;
cout << "2.链表设置." << endl;
cout << "3.链表逆置" << endl;
}

LinkList::Operate()
{
int i ;
LinkList L[1],odd;
menu();
cin >> i;
while(i ==1)
{

L[1] = LinkList();

cout << "创建成功!请继续操作!" <<endl;
}

{

while(i==2)
{


PrintList(L[1]);

}

while(i==3)
{

NZLink(L[1]);
PrintList(L[1]);

}


[此贴子已经被作者于2006-10-29 18:32:40编辑过]

2006-10-29 13:01
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 

MM啊。。不知道你写过程序没有啊?不是我所你,你的这个叫程序吗?
类完全是错的。。。且不说这个,你函数中又有cout又有printf,这只是习惯问题也不说嘛
你看你while (i=1)这是在比较吗?这是在赋值吧?还有struct都不知道怎么定义,还有分号括号这些也写掉
多看看书吧。。。还有写程序的时候要细心,,MM 本来就是应该很细心的吧。我给你把程序作了大面积的修改,
居然还比我自己写花的时间多,还是基本上满足你的要求吧?希望对你有所帮助
==================================================================================================
#include<iostream.h>
#include<stdio.h>

struct Node{
int Data;
Node* next;//下一个节点
Node* last;//上一个节点
};

class LinkList
{
private:
// Node* L;
// Node* p;
// Node* temp;
Node* head;
Node* tail;
int size;//表中元素个数
public:
LinkList(int i=10);

//void InitList(LinkList *L);
void setLinkList();//增加元素
void PrintList();//打印表
void NZLinkList();//逆置
void menu();
void Operate();

};


int main()
{
LinkList list;
list.Operate();
return 0;
}

LinkList::LinkList(int i)
{
head=tail=NULL;
size = i;

}

void LinkList::setLinkList()
{
int a;
Node *p,*q = tail;
cout << "请输入要插入的数据(当遇到0时,返回):" << endl;
while(cin >> a && 0 != a)
{
p = new(struct Node);
if(NULL == head) {
head = p;
size =0;
}
p->Data = a;
if(NULL != q) q->next = p;
p->next = NULL;
p->last = q;
q = p;
size++;
}
tail = q;

}

void LinkList::PrintList()
{
Node * p = head;

int n = 0;
while(p != NULL)
{
if(n%10 == 0) printf("\n");
printf("%5d",p->Data);
p = p->next;
n++;
}
printf("\n");
}


void LinkList::NZLinkList()

{
if(head == NULL)return;
int n=size/2,i=0;
Node *p = head,*q = tail;
int data0;
while(i<n)
{
data0 = p->Data;
p->Data = q->Data;
q->Data = data0;
p = p->next;
q = q->last;
i++;
}

}

void LinkList::menu()
{
cout << "1.链表创建" << endl;
cout << "2.链表打印" << endl;
cout << "3.链表逆置" << endl;
cout << "4.增加元素" <<endl;
cout << "5.退出系统" <<endl;

}

void LinkList::Operate()
{
int i ;
menu();
cin >> i;
while(5 != i)
{
while(i == 1)
{
int number;
cout<<"请输入"<<size<<"个数字:";
Node *p,*q=NULL;
for(int j=0;j<size;j++)
{
cin>>number;
p = new (struct Node);
if (0 == j) head = p;
p->Data = number;
p->next = NULL;
p->last = q;
if (0 != j) q->next = p;
q = p;
}
tail = q;
cout << "创建成功!请继续操作!" <<endl;
menu();
cin>>i;
}

while(i==2)
{
PrintList();
menu();
cin>>i;

}

while(i==3)
{
NZLinkList();
PrintList();
menu();
cin>>i;
}

while (i == 4)
{
setLinkList();
menu();
cin>>i;
}
}
}

[此贴子已经被作者于2006-10-29 16:18:34编辑过]


天行健,君子以自强不息!!QQ:68660681
2006-10-29 16:04
子时之龙
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2006-7-29
收藏
得分:0 
==

龙已经出现了! 只因在子时, 人们无法察觉…………
2006-10-29 16:48
tornadozheng
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-10-22
收藏
得分:0 
我不怕你们说我PIG,只想慢慢地升级.我不怕输,加油!

不懂就问,别嫌我笨^-^
2006-10-29 17:57
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 

我不是这个意思。。只是确实问题不少哈。。提醒你一下而已。。


天行健,君子以自强不息!!QQ:68660681
2006-10-30 11:38
快速回复:烂程序,望各位帮改
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017449 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved