c语言创建链表 链表 逆置

如何用c语言实现单链表的逆置_百度知道
如何用c语言实现单链表的逆置
提问者采纳
&定义一个临时指针并指向链表的第一个结点    while(p;是s指向r   
x=getchar();;********************************************************************************&) /& / /   
r-&&输出结点的值   
p=p-&   using namespace std#include&next=s; /此时头结点的后继指针和前驱指针赋值为空    r=L; /&quot!=NULL)    {   
q=q-&p-&/当创建结束时;/ /next=NULL;&/ /    cout&调用逆置链表    cout&;   void CreateList(Number *&L) /next=NULL;next=L-& /销毁链表   {    Number *p=L;/   
q=p-&是r指针指向头结点    x=getchar();/调用销毁链表的函数    return 0;   
p=q;&//定义两个链表类型的临时指针    &指向下一个结点    }    cout&控制当输入回车键时结束    {   
s=(Number *)malloc(sizeof(Number));此链表的逆置为; /   }   int main()   {    cout& /输入的链表为; //********************************************************************************&quot!=NULL)    {   
free(p);/// /&    PrintList(number):&// /    CreateList(number);/ //\ ///释放p的空间   
p=q,*r;endl!=NULL) /&    p=q;    PrintList(number); /换行   }   void InverseList(Number *L) //endl:&    }   }   void DestroyList(Number *&L) //请输入一个链表; /&创建链表   {    Number *s;定义一个临时字符变量    L=(Number *)malloc(sizeof(Number));&#47,r的后继指针为空   }   void PrintList(Number *L) /&/ &#47:&用x接受一个从键盘输入的字符    while(x;&&&next=p;链表当前结点的值    struct Number *   
L-&    while(q;/next,空就结束    {   
cout&    DestroyList(number);    q=q-&n'/ /用x接受一个从键盘输入的字符    }    r-&gt,*q=p-&&/    p-&链表的逆置   {    Number *p=L-&/ &#47!='&&next=NULL;输出链表   {    Number *p=L-&   
p-&data=x;开辟下一结点的空间   
s-&&;调用输出链表    cout& //&    }    cout&r的后继指针指向s   
r=s;链表当前结点指向下一结点的指针   }*/iostream& ///    while(p;为头结点开辟空间    L-&调用创建链表    cout& /释放链表&&quot,*q=L-&判断结点是否为空; /调用输出链表    InverseList(number);   struct Number //链表的类型   {    char data
其他类似问题
单链表的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁单链表数据结构C语言_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
喜欢此文档的还喜欢
单链表数据结构C语言
阅读已结束,如果下载本文需要使用
想免费下载本文?
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢C语言单链表逆置_Linux编程_Linux公社-Linux系统门户网站
你好,游客
C语言单链表逆置
来源:Linux社区&
作者:odaynot
实现单链表的逆置。
多的就不说了。代码如下:
#include&&stdio.h& &
#include&&stdlib.h& &
typedef&struct&node&{&
& & struct&node&*&
Node&*CreatList(void)&
& & int&val,&i,&n;&
& & Node&*phead,&*p,&*q;&
& & phead&=&NULL;&
& & printf("请输入您要建立的链表长度:\n");&
& & scanf("%d",&&n);&
& & printf("请输入您要输入的数据:\n");&
& & for(i=0;&i&n;&++i)&
& & {& & &
& & & & scanf("%d",&&val);&
& & & & p&=&(Node&*)malloc(sizeof(Node));&
& & & & p-&data&=&&
& & & & if(NULL&==&phead)&
& & & & & & q&=&phead&=&p;&
& & & & else&
& & & & q-&next&=&p;&
& & & & q&=&p;&
& & p-&next&=&NULL;&
& & return&&
Node&*ReverseList(Node&*phead)&
& & Node&*p,&*q,&*r;&
& & q=r=NULL;&
& & while(p)&
& & & & q&=&p-&&
& & & & p-&next&=&r;&
& & & & r&=&p;&
& & & & p&=&q;&
& & return&r;&
void&ShowList(Node&*phead)&
& & Node&*p;&
& & while(p)&
& & & & printf("%d&",&p-&data);&
& & & & p&=&p-&&
& & printf("\n");&
int&main(void)&
& & Node&*&
& & phead&=&CreatList();&
& & printf("链表逆置前的数据:\n");&
& & ShowList(phead);&
& & phead&=&ReverseList(phead);&
& & printf("链表逆置后的数据:\n");&
& & ShowList(phead);&
& & return&0;&
相关资讯 & & &
& (01月29日)
& (12/27/:55)
& (02月25日)
& (01月19日)
& (12/27/:21)
图片资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
2013年3月全国计算机等级考试二级C语言上机题库100套(最新版).doc120页
本文档一共被下载:
次 ,您可免费全文在线阅读后下载本文档
文档加载中...广告还剩秒
需要金币:80 &&
你可能关注的文档:
··········
··········
2012年3月全国计算机等级考试
二级C语言上机题库100套
(超级最新完整版)
建议拷贝岛U盘使用查找功能百分百中
给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。例如:当形参n的值为10 的时,函数返回:9.6125588。
第一处 s 0;
第二处 for i 1;i++
第三处 s s+ 2.0*i-1 * 2.0*i+1 / t*
给定程序MODI1.C中函数fun的功能是:统计substr所指字符串在str所指字符串中出现伯次数。
/**found**/
for i 0;str[i];i++
/**found**/
if substr[k+1]
请编写一个函数fun,它的功能是:根据以下公式求JI的值(要求满足精度0.0005,即某项小于0.0005时停止送代):程序运行后,如果输入精度为0.0005,则程序输出为3.14…。
double fun double eps
double s 1,t 1./3;
s+n++;t t*n/ 2.0*n+1
return s*2.0 ;
给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序连接。函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。
第二处 q p-
第三处 q q-
给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n各元素按从小到大的顺序进行排序。
/**found**/
/**found**/
请编写一个fun函数,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
void fun int m,int *a,int *n
for i 7;i++
函数fun的功能是:逆置数组元素是的值。例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:
正在加载中,请稍后...折半查找(C语言链表实现)
查找和排序是两种很基本的操作。今天我们先用直接插入排序对输入的链表进行排序,然后利用折半查找进行对给定key值的查找。这里我们只是实现了对链表的折半查找,折半查找的ASL=lg(n+1)-1,折半查找对于有序表、顺序存储结构有很高的查找效率,但对于链表则无法进行有效的折半查找(需要随时进行元素的定位以及指针定位,例如代码的GetPoint()和GetElem()函数).另外利用尾插法建立的链表是逆序的,为了方便需要逆置.(欢迎学习交流新浪微博ID:@小玩多)
以下代码在Win-Tc1.9.1下编译通过.
#include&"stdio.h"
#include&"malloc.h"
//节点的声明
typedef&struct&Node{
&&&&struct&Node&*&
&&&&}node,*ptrN
//采用尾插法建立单链表
&ptrNode&Create_List(int&n){//参数n为链表的节点数
&&&&int&i&=0;
&&&&ptrNode&p,
&&&&head&=&(ptrNode)malloc(sizeof(node));
&&&&head-&next&=&NULL;
&&&&for(i=n;i&0;i--){
&&&&&&&&p&=&(ptrNode)malloc(sizeof(node));
&&&&&&&&printf("input&the&value:");
&&&&&&&&scanf("%d",&p-&data);//注意此处的&
&&&&&&&&p-&next&=&head-&//使新节点和后一节点连接起来
&&&&&&&&head-&next&=&p;//使新的节点和头节点连接起来,保证head的指针域存储的是下一节点的地址
&&&&&&&return&
//打印单链表,采用尾插法建立链表后打印是逆序打印的
void&Print_List(ptrNode&head){
&&&&ptrNode&p;
&&&&p&=&head-&
&&&&while(p){
&&&&&&&&printf("[%d]&",p-&data);//打印当前数据
&&&&&&&&p=p-&//指针后移
//取得链表第i个元素
int&GetElem(ptrNode&head,int&i){
&&&&int&j=0;
&&&&ptrNode&p;
&&&&while(p&&j&i){
&&&&&&&&p&=&p-&
&&&&&&&&j++;
&&&&return&p-&
//取得链表第i个元素的指针
ptrNode&GetPoint(ptrNode&head,int&i){
&&&&int&j=0;
&&&&ptrNode&p;
&&&&while(p&&j&i){
&&&&&&&&p&=&p-&
&&&&&&&&j++;
&&&&return&p;
//单链表的折半查找
ptrNode&Search_Bin(ptrNode&head,int&key,int&length){
&&&&int&low&=&1,high&=&length,mid&=&0;
&&&&while(low&=high){
&&&&&&&&mid&=&(low+high)/2;
&&&&&&&&if(key==GetElem(head,mid))return&GetPoint(head,mid);
&&&&&&&&&&&else&if(key&GetElem(head,mid))&high&=&mid-1;
&&&&&&&&&&&&&&&&else&low&=&mid+1;
&&&&return&NULL;
//单链表的就地逆置
ptrNode&Opposite_List(ptrNode&head){
&&&&ptrNode&p,p_next,r;
&&&&p=r=NULL;
&&&&p&=&head-&
&&&&while(p){
&&&&&&&&&p_next&=&p-&
&&&&&&&&&p-&next&=&r;//逆置连接
&&&&&&&&&r&=&p;
&&&&&&&&&p&=&p_
&&&&&head-&next&=&r;
&&&&&return&
//单链表的直接插入排序
ptrNode&Insert_Sort(ptrNode&head,int&length){
&&&&int&i,j,
&&&&ptrNode&p;
&&&&for(i=2;i&=i++){
&&&&&&&&temp&=&GetElem(head,i);
&&&&&&&&j&=&i-1;
&&&&&&&&while(j&=1&&(temp&GetElem(head,j))){
&&&&&&&&&&&&p&=&GetPoint(head,j);
&&&&&&&&&&&&p-&next-&data&=&p-&
&&&&&&&&&&&&j--;
&&&&&&&&&&&&}
&&&&&&&&&&(GetPoint(head,j+1))-&data&=&
&&&&return&
void&main(){
&&&&&ptrNode&L,
&&&&&L=&Create_List(5);
&&&&&Print_List(L);
&&&&&L&=&Opposite_List(L);//对利用尾插法的单链表进行逆置
&&&&&printf("\n");
&&&&&Print_List(L);
&&&&value&=&Search_Bin(L,7,5);
&&&&printf("value&=&%d",value-&data);
&&&&&getch();
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 c语言链表教程 的文章

 

随机推荐