| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1390 人关注过本帖
标题:[原创]链表逆置
只看楼主 加入收藏
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
 问题点数:0 回复次数:5 
[原创]链表逆置
题目:将一个有头结点的链表逆置
我写的时候用-1做为结束标记。我用了Head做为辅助头结点。有兴趣的去看看。
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct node{
  int data;
  struct node *next;
}Node,*LinkList;
void CreateList(LinkList *head)
{   LinkList p,q;
    int x;
 if((*head=(Node *)malloc(sizeof(Node)))==NULL) exit(1);
    (*head)->next=NULL;
 q=(*head);
 printf("please input data:\n");
 scanf("%d",&x);
 do{
        if((p=(Node *)malloc(sizeof(Node)))==NULL) exit(1);
  p->data=x;
  p->next=NULL;
  q->next=p;
  q=p;
  p=NULL;
  printf("please input number:\n");
  fflush(stdin);
  scanf("%d",&x);
 }while(x!=-1);
}
void Reverse(LinkList head)
{LinkList p,q,s=NULL,Head;
 int count=0,i;
 p=head->next;
 while(p)
   {   count++;
       p=p->next;
   }
   p=head->next;
   if((Head=(Node *)malloc(sizeof(Node)))==NULL) exit(1);
   Head->next=p;
   head->next=NULL;
 for(i=0;i<count;i++)
   {  p=Head->next;
      Head->next=p->next;
   p->next=NULL;
   if(s==NULL)
   s=p;
   else
   { p->next=s;
      s=p;
   }
   }
   head->next=s;
   free(Head);
}
void Print(LinkList head)
{ LinkList p;
  p=head->next;
  while(p)
  {  printf("%d\t",p->data);
     p=p->next;
   }
  
}
main()
{ LinkList head;
  CreateList(&head);
  Print(head);
  Reverse(head);
  printf("\n");
  Print(head);
}
图片附件: 游客没有浏览图片的权限,请 登录注册

搜索更多相关主题的帖子: 链表 
2005-05-01 01:04
热情依然
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:22
帖 子:715
专家分:0
注 册:2005-4-5
收藏
得分:0 
逆置做以下修改更简单
void Reverse(LinkList head)
{
   LinkList p,q,r;
   p=head->next;
   q=p->next;
   while(q!=NULL)
   {
     r=q->next;
     q->next=p;
     p=q;
     q=r;
   }
  head->next->next=NULL;
  head->next=p;
}
你的太复杂

c++/C + 汇编 = 天下无敌
2005-05-01 18:22
wangdong1027
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-1-20
收藏
得分:0 

,大家好,偶最近新建了一个数据结构的群(C语言版的 ),愿有兴趣的人多多捧场!凡高手者立马聘为管理员

2007-01-20 11:51
wangdong1027
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-1-20
收藏
得分:0 
大家好,偶最近新建了一个数据结构的群(C语言版的 ),愿有兴趣的人多多捧场!凡高手者立马聘为管理员
群号:16373977
2007-01-20 12:01
cedricporter
Rank: 1
等 级:新手上路
帖 子:49
专家分:3
注 册:2007-2-6
收藏
得分:0 

#include <iostream>

using namespace std;

struct Node
{
public:
int n;
Node* next;
};

int main()
{
Node *p1, *p2, *head;
head = 0;

p1 = (Node*) new Node;
cin >> p1->n;
if (p1->n != -1)
head = p1;

while (head != 0)
{
p2 = (Node*) new Node;
cin >> p2->n;
if (p2->n == -1)
{
p1->next = 0;
break;
}
p1->next = p2;
p1 = p2;
}

if (head != 0)
{
p1 = head;
while (p1 != 0)
{
cout << p1->n << ' ';
p1 = p1->next;
}
}
cout << "\n----------------------------\n";
////////////////////////////////////////////////
// 反轉鏈表
////////////////////////////////////////////////
p1 = head;
p2 = p1->next;
head->next = 0;

while (p2 != 0)
{
head = p2;
p2 = p2->next;
head->next = p1;
p1 = head;
}

if (head != 0)
{
p1 = head;
while (p1 != 0)
{
cout << p1->n << ' ';
p1 = p1->next;
}
}

system("pause");

return 0;
}

//看看这个,对你有没有帮助......


清脆的口琴聲﹏悠揚的旋律﹏然而︵每個音符︵?°都充滿了悲傷︵?°~↘
2007-02-21 10:38
cedricporter
Rank: 1
等 级:新手上路
帖 子:49
专家分:3
注 册:2007-2-6
收藏
得分:0 

不好意思,
struct Node
下面打多了个
public:


清脆的口琴聲﹏悠揚的旋律﹏然而︵每個音符︵?°都充滿了悲傷︵?°~↘
2007-02-21 10:39
快速回复:[原创]链表逆置
数据加载中...
 
   



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

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