求单链表模板input函数及其在main()里实现,输入input数据然后输出input output error单链表

单链表的操作实现_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
单链表的操作实现
上传于||文档简介
&&单​链​表​的​操​作​实​现
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
下载文档到电脑,查找使用更方便
还剩6页未读,继续阅读
你可能喜欢单链表的逆置算法_百度知道
单链表的逆置算法
对空间使用不受限制.谢谢帮忙.就是这个题目,要求有流程图和源代码用C语言编写程序实现单链表的逆置算法
不需要流程图了,baidu不能贴图的
提问者采纳
p-&), *q; Node *data =
q =typedef struct node{next = NULL, *r;
p-&gt.h&next =
PrintList(head);
printf(& while(p) {
q = p-&gt, *q:\}/链表逆置前的数据;; while(
printf(&}/n&;
return 0, &i); struct node *#include & scanf(&
p-& } PrintList(head);next =n&n&quot:123456链表逆置后的数据; return head!= 0) {
p = (Node *)malloc(sizeof(Node));
p =创建链表Node *CreatList(void){ int i帮你写好了;请输入您要输入的数据;):\输出链表void PrintList(Node *head){ Node *p; } p-&链表逆置后的数据;/ p = head.h&);%d&
head = ReverseList(head);
printf(& head = CreatList();n&, &i); q=r=NULL;
if(head == NULL)
q = head =%d\ }}int main(void){ Node */}N链表的逆置Node *ReverseList(Node *head){ Node *p; while(p) {
printf(&//%d&quot:\ head = NULL;
r = p,你看下#include &} 请输入您要输入的数据:1 2 3 4 5 6 0链表逆置前的数据, *p
其他类似问题
为您推荐:
其他4条回答
程序已在vs2005和dev-cpp下编译确认:
/* 单链表就地逆置实用程序,长度不限,输入非数字(比如字母等)代表输入结束*/
#include &stdio.h&
#include &stdlib.h&
#include &conio.h&
struct list
struct list *
typedef struct list *
int main()
link ptr,head,
tail=(link)malloc(sizeof(struct list));
tail-&next=NULL;
printf(&Please input integers:(when input isn't digit, end input)\n&);
while (scanf(&%d&,&ptr-&data)==1) /*当输入任何非数字时输入结束,然后显示输出 */
head=(link)malloc(sizeof(struct list));
head-&next=
#include &stdio.h&
#include &stdlib.h&
typedef struct node
struct node *
//创建链表
Node *CreatList(void)
Node *head, *p, *q;
head = NULL;
printf(&请输入您要输入的数据:\n&);
scanf(&%d&, &i);
while(i != 0)
p = (Node *)malloc(sizeof(Node));
if(head == NULL)
q = head =
scanf(&%d&, &i);
p-&next = NULL;
//链表的逆置
Node *ReverseList(Node *head)
Node *p, *q, *r;
//输出链...
我写过单链表的逆置,详情可以看我的文章重点看这个函数void relist()/*链表倒置*/
单链表的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁数据结构单链表_百度知道
数据结构单链表
数据结构单链表的插入
完整的程序
我有更好的答案
#include &stdio.h&
#include &stdlib.h&
typedef char D
typedef struct LNode{
struct LNode *
}SLink,*LinkL
int CreatListF(SLink *head,Datatype a[],int n){
/*头插法建表 */
head-&next=NULL;
for(i=0;i&n;i++)
s= (LinkList )malloc(sizeof(SLink ));
s-&data=a[i];
s-&next=head-&
head-&next=s;
int CreatListW(SLink *head ,Datatype a[],int n){
/*尾插法 */
SLink *r,*s,*t;
for(i=0;i&n;i++)
s=(LinkList )malloc(sizeof(SLink ));
s-&data=a[i];
r-&next=s;
r-&next=NULL;
#include&iostream&
struct LinkNode
LinkNode *
class List
LinkNode *
void inputf();
void inputt();
void output();
bool Insert(int i,int x);
bool Remove(int i,int &x);
bool getData(int i,int &x);
void Merge(List &la,List &lb);
void bubSort(List &lc);
List::List()
first=new LinkN
first-&link=NULL;
List::~List()
LinkNode *p;
while(first-&link!=NULL)
first-&link=p-&
void List::inputf()
LinkNode *newN
其他类似问题
为您推荐:
您可能关注的推广
单链表的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁单链表基本操作总结
您当前位置: &
[ 所属分类
链表基本概念: 链表:线性表的链式存储。 数据域:存储数据信息。即数据。 指针域:存放下一节点的位置信息。即该指针指向下一节点。单链表:每一个节点node:一个数据域 + 一个指针域。 头节点: 1、数据域可以存放线性表长度等公共信息。 2、指针域,指向第一个节点(数据域)的位置。 3、头结点不一定是链表的必须元素。不过有了头结点,对第一个元素节点前插入和删除元素,就和其它节点一致了。 4、头结点是为了操作的同一和方便设立的,其数据域一般无意义,也可存放链表长度。 头指针:指向第一个结点的指针。 最后一个节点:数据域存放数据;指针域为空,即NULL。 若线性表为空,则头节点的指针域为空。 // 循环链表:将单链表中的终端节点的指针由空指针改为指向头结点,就使整个单链表形成一个环,这种头尾相接的单链表简称循环链表。 // 双向链表:是在单链表的每个节点中,再设置一个指向其前驱节点的指针域。单链表基本操作有:创建、输出、测长、插入、删除、逆置、排序等。单链表结构定义代码:typedef struct Node{ struct Node *}ListN创建单链表操作:/**创建链表*/ListNode * Create_list(int n) // 注意这里函数返回值为一个指向Node的指针,n表示几个节点{ int elem,i; i = 1; ListNode *head, *current, * /*current:代表一个当前节点,它的下一节点是你正要创建的;temp:代表你正要创建的节点。*/ head = new ListN head-&next = NULL; head-&data = current = while(i &= n) /*尾插法:即新节点放在尾部*/ { cout && "please input elem: " && cin && temp = new ListN temp-&data = temp-&next = NULL; current-&next = current = i++; }}输出操作:/**输出链表*/int Output_list(ListNode *head){ ListNode *p; p = head-& if(p == NULL) { cout && "The List is NULL" && return 0; } do{ cout && p-&data && ' '; p = p-& }while(p != NULL); // 这里需要加“;” cout && return 0;}测一个链表的节点数,即长度:/**测长度*/int Length_test(ListNode *head){ ListNode *p; int i = 0; p = head-& while(p != NULL) { i++; p = p-& } cout && "The length of list is " && i && return 0;}插入节点操作:/**在第i个节点后插入一个节点,elem:表示你要插入的数据*/ListNode * Insert_node(ListNode *head,int elem,int i){ int j = 0; ListNode *p,* temp = head-& /*错误写法 while(NULL != temp) 在找到 j 后没有跳出循环 { j++; if(j &= i)temp = temp-& } */ while(NULL != temp) { j++; if(j &= i) /**指针停在第i个节点之前*/ temp = temp-& } if(temp == NULL) { cout && "There is no i" && } p = new ListN p-&data = p-&next = temp-& temp-&next = head-&data = head-&data + 1; /**插入一个结点,头结点数据保存的链表长加一*/}删除操作:/**删除第i个结点*/ListNode * Delete_node(ListNode *head,int i){ int j = 0; ListNode *temp,*pre_ temp = head-& while(NULL != temp) { j++; if(j &= i) pre_temp = /**保存之前节点*/ temp = temp-& } if(temp == NULL) { cout && "There is no i" && } pre_temp-&next = temp-& /**这里不能写成temp = temp-& 因为下面有会将后面的节点删掉*/ head-&data -= 1; /**删掉一个结点,头结点数据保存的链表长减一*/}逆置操作:/**单链表逆置,将头结点后的节点一个个断开,使用头插法插入在头结点后*/ListNode * Reverse_list(ListNode *head){ if(NULL == head) if(NULL == head-&next) if(NULL == head-&next-&next) /**要实现逆置,除了头结点外,至少需要2个数据节点*/ ListNode *curr, * curr = head-& /**curr用来保存断开后的那一串*/ head-&next = NULL; /**头结点与后面结点断开*/ while(NULL != curr) { temp = curr-& /**temp起临时代替curr的作用*/ curr-&next = head-& /**头插法*/ head-&next = curr = /**temp将功能还给curr*/ }}单链表排序(使用冒泡排序法):此排序算法,仅交换了数据,没有交换结点void Swap_data(int &a,int &b) /**这里必须要加引用符,不然交换没效果*/{ temp = a = b =}ListNode * Sort_list(ListNode *head){ int i, ListNode *p; len = head-& p = head-& if(NULL == p) cout && "list is null" && for(i = 1; i &= i++) { while(NULL != p-&next) {if(p-&data & p-&next-&data) Swap_data(p-&data,p-&next-&data);p = p-& } p = head-& }}一个特别的函数:用于找出单链表中间节点,在不知道节点总数的情况下/**不知节点总数,只遍历一次就可以求出中间结点*//**这个函数有问题,只能对节点为奇数的求解,节点为偶数时,会出现p-&next-&next无意义的情况,使程序发生错误*//*原理是:找两个指针,一个每次走一步,另一个每次走两步,当走两步的指针到结尾时,走一步的指针刚好走到中间结点处*/void Search_mid(ListNode *head){ ListNode *p_1,*q_2; ListNode * p_1 = head-& q_2 = head-& while(NULL != q_2-&next) { p_1 = p_1-& q_2 = q_2-&next-& mid = p_1; } cout && "中间值为: " && mid-&data &&}测试主函数:int main(){ ListNode *p; int a=3; int b = 4; p = Create_list(5); cout && "The list is:" && Output_list(p); Length_test(p); p = Insert_node(p,6,5); cout && "插入节点后:" && Output_list(p); cout && "New length: " && p-&data && p = Delete_node(p,3); cout && "删除节点后:" && Output_list(p); p = Reverse_list(p); cout && "逆置后:" && Output_list(p); p = Sort_list(p); cout && "排序后(从小到大):" && Output_list(p); cout && "原ab: " && a && b && Swap_data(a,b); cout && "交换后: " && a && b && Search_mid(p); return 0;}本文地址:/Linux/767.htm
本文系统(linux)相关术语:linux系统 鸟哥的linux私房菜 linux命令大全 linux操作系统
转载请注明本文标题:本站链接:
分享请点击:
1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
阅读(1052)
脚步无法到达的地方,目光可以到达;目光无法到达的地方,梦想可以到达。
手机客户端
,专注代码审计及安全周边编程,转载请注明出处:http://www.codesec.net
转载文章如有侵权,请邮件 admin[at]codesec.net链表_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
上传于||文档简介
&&C​语​言
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩11页未读,继续阅读
你可能喜欢

我要回帖

更多关于 input output model 的文章

 

随机推荐