c语言单链表基础知识

1.请教c语言中链表的基本知识

List是指向Node(struct node)的节点的指针,

List *pist中的pist是指向Node(struct node)的双指针,即Node **pist;

后面的话没太看懂,其实那句

typedef Node *List 完全可以在定义node结构体的时候就为其指定别名,即

typedef struct node{

Item item;

struct node *next;

}Node,*List;

这样完全可以

2.C语言中有关链表的基础知识

举个例子:假设你想到C的家中拿一样东西,但你不知道C家的地址,不过,你知道A家的地址,A家有B的地址,B有C的地址,所以,你到A处找到B的地址,再去B处找到C的地址,就知道C的地址了。

链表就是这个意思,每一个元素都保存有下一个元素的地址,根据这个地址,你可以依次找到最后一个元素,故形成了一个链。这个代码,重点就在于结构体,结构体名是:node 其中包含两个成员变量,一个是 int类型的数据,一个就是 例子中的 “ 地址 ”,这个 “ 地址 ” 是一个变量的地址,而这个变量又是你定义的结构体 node 的存储位置,而这个变量又包含两个变量(int数据和 “ 地址 ” ),这样就形成了链表。

以后你会知道这种 ‘ 地址 ’ 就是一种变量 叫 指针。

3.用C语言编程实现单链表的基本操作

第二个显示为什么?为什么什么东西都没有、

#include<stdio.h>

typedef struct sample

{

char ch;

struct sample *next;

}LNode;

LNode *Createlist(LNode *head) //创建单链表,头插入法

{

LNode *p;

if((head=(LNode *)malloc(sizeof(LNode)))==NULL)

printf("aply error\n");

head->next=NULL;

head->ch = '\0';

int i= 0;

printf("请一次输入A-Z:\n");

for(i = 0 ; i < 26; ++i)

{

p=(LNode *)malloc(sizeof(LNode));

if(!p)

printf("aply error\n");

scanf("%c",&p->ch);

p->next = head->next;

head->next=p;

}

return head;

}

LNode *EncryptList(LNode* head)

{

LNode *p= head,*q = head->next,*r = head->next;

while(p->next)

{

p = p->next;

}

int i = 0 ;

for(i = 0 ; i < 3; i++)

{

p->next = r;

p = p->next;

q = q->next;

r = q;

}

p->next =NULL;

head->next = q;

return head;

}

void ListPrint(LNode *head)

{

LNode *p = head->next;

while(p->next!=NULL)

{

printf("%c\t",p->ch);

p=p->next;

}

printf("%c\n",p->ch);

}

int main(void)

{

LNode *head;

head = Createlist(head);//链表初始化

ListPrint(head); //打印单链表数据

head = EncryptList(head);

ListPrint(head);

return 0;

}

看看。

4.关于C语言链表基础问题

链表分带头结点的和不带的。

如果是带头结点的话,初始化时需要先p=malloc一个节点p->next=NULL并head=p;如果不带的话,初始化时head=NULL即可。带头结点有个好处:新的s=malloc的节点,头插入时总是s->next=head->next;head-next=s;尾插入时总是尾节点tail->next=s,s->next=NULL;不带头结点时要区分是不是第一个节点,需要判断。

定义结构体时,储存数据的变量叫做数据域,还有表示节点关系的指针,由于指针能够保存地址,因而能够通过它找到下一个节点,也是唯一能找到其他节点的办法。

5.单链表的基本操作操作,类C语言

#include < iostream >#include < string > using namespace std; #define NULL 0 struct list { string name; long num; string sex; list * next; }; int n; void main() { list * creat(void); list * del(list * head,long num); list * insert(list * head,list * stud); void print(list * head); list * head,* list_; long del_num; bool quit_del = false; bool quit_insert = false; cout << "Menu: " << endl; cout << "1--创建链表" << endl; cout << "2--删除结点" << endl; cout << "3--添加结点" << endl; cout << "4--察看链表" << endl; int n = 0; cin >> n; if (n != 1) cout << "没有结点,请创建" << endl << endl; n = 1; to:switch(n) { case 1: cout << endl; cout << "请创建链表(格式: 序号 姓名 姓别(F or M)) -_-||" << endl; head = creat(); cout << endl << "请输入 1,2,3,4(Menu),键入其它终止 _"; break; case 2: quit_del = false; cout << endl << " -_-|| 请输入要删除的序号:"; cin >> del_num; while ( !quit_del ) { head = del(head,del_num); print(head); cout << "继续? *** y ***** n ***"; char param_del; cin >> param_del; if ( param_del == 'y') { cout << "-_-|| 请输入要删除的序号: "; cin >> del_num; } else if( param_del != 'n') { cout << "输入有误,无法判断,返回菜单" << endl; quit_del = true; break; } else { quit_del = true; break; } } cout << endl << "请输入 1,2,3,4(Menu),键入其它终止 _"; break; case 3: quit_insert = false; cout << endl << "-_-|| 请输入要添加的结点: " << endl; list_ = new list; cin >> list_->num >> list_->name >> list_->sex; while ( !quit_insert ) { head = insert(head,list_); cout << "继续? *** y ***** n ***"; char param_insert; cin >> param_insert; if ( param_insert == 'y') { cout << endl << "-_-|| 请输入要添加的结点: " << endl; list_ = new list; cin >> list_->num >> list_->name >> list_->sex; } else if ( param_insert != 'n' ) { cout << "输入有误,无法添加,返回菜单" << endl; quit_insert = true; break; } else { quit_insert = true; break; } } cout << endl << "请输入 1,2,3,4(Menu),键入其它终止 _"; break; case 4: print(head); cout << endl << "请输入 1,2,3,4(Menu),键入其它终止 _"; break; default: cout << "呃,又出错误了" << endl; } cin >> n; if (n == 1) { cout << "结点已被创建,无法重复" << endl; n = 4; } while ( n == 2 || n == 3 || n == 4) { goto to; } } list * creat(void) { bool quit_creat = false; list * head; list * p1, * p2; n = 0; p1 = p2 = new list; cin >> p1->num >> p1->name >> p1->sex; head = NULL; while ( !quit_creat ) { n = n + 1; if (n == 1) head = p1; else p2->next = p1; p2 = p1; cout << "继续? *** y ***** n ***"; char param_creat; cin >> param_creat; if (param_creat == 'y') { p1 = new list; cin >> p1->num >> p1->name >> p1->sex; } else if (param_creat != 'n') { cout << "输入有误,无法完成继续创建,返回菜单" << endl; quit_creat = true; break; } else { quit_creat = true; break; } } p2->next = NULL; return (head); } list * del(list * head,long num) { list * p1, * p2; if (head == NULL) { cout << "该链表为空,无法删除-_-||" << endl; return (head); } p1 = head; while (num != p1->num && p1->next != NULL) { p2 = p1; p1 = p1->next; } if (num == p1->num) { if (p1 == head) head = p1->next; else p2->next = p1->next; delete p1; cout << "o(∩_∩)o 删除: " << num << endl; n = n - 1; } else cout << endl << "没有 -_-|| 找到: " << num << endl; return (head); } list * insert(list * head,list * stud) { list * p0,* p1, * p2; p1 = head; p0 = stud; if (head == NULL) { head = p0; p0->next = NULL; } else { while ((p0->num > p1->num) && (p1->next != NULL)) { p2 = p1; p1 = p1->next; } if (p0->num <= p1->num) { if (head == p1) head =p0; else p2->next = p0; p0->next = p1; } else { p1->next = p0; p0->next = NULL; } } n = n + 1; return (head); } void print(list * head) { list * p; cout << endl << "这" << n << "条记录顺序如下: " << endl; p = head; if (head != NULL) do { cout << p->num << " " << p->name << " " << p->sex << endl; p = p->next; }while(p != NULL); } //以前做的一个..应该符合你的要求。

c语言单链表基础知识

转载请注明出处生活知识网 » c语言单链表基础知识

资讯

模拟电路基础知识点总结

阅读(23)

本文主要为您介绍模拟电路基础知识点总结,内容包括模电基础知识,模拟电路基础知识,模拟电路基础知识是什么?。直流放大系数=IC/IB,就是集电极电流除以基极电流(直流电流)当IC=1mA时,对应的IB=10μA,这时的直流电流放大系数=1mA/

资讯

经济法相关基础知识

阅读(28)

本文主要为您介绍经济法相关基础知识,内容包括经济法基础重点有什么?,经济法基础考试重点要点考点,初级会计考试经济法基础考点?。经济法基础重点在于:经济法概论(1)法和经济法的概念(2)经济纠纷的解决途径(3)违反复经济法的法律责任2、会计

资讯

体育健康基础知识理论

阅读(25)

本文主要为您介绍体育健康基础知识理论,内容包括体育健康知识,体育基础理论包括哪些?,体育与健康理论知识。去百度文库,查看完整内容> 内容来自用户:凤凰涅槃 体育运动对于人体的不同方面都会产生很大的影响,包括神经系统、运动系统、心血管系

资讯

2017历史基础知识

阅读(24)

本文主要为您介绍2017历史基础知识,内容包括2017中山大学考研619历史学基础(A)复习指南,近现代史可以用吧,2017历史学考研应该怎样复习,2017年中央民族大学历史学考研真题怎么考。考研的复习,专业课必不可少的,但是如果在历史专业课上花太多的

资讯

声母的基础知识

阅读(22)

本文主要为您介绍声母的基础知识,内容包括声母的相关知识点,语文基础知识声母一共有多少个?分别是什么?,声母是什么。声母,是使用在韵母前面的辅音,跟韵母一齐构成的一个完整的音节。其他汉藏语系语言也有类似的结构。一般由辅音充当,即首辅音

资讯

均线基础知识教程

阅读(26)

本文主要为您介绍均线基础知识教程,内容包括谁懂比特币k线图基础知识图解,每个线代表的是什么意思,要详细的,股票k线图入门图解视频教程,新手学炒股,看什么书比较好?爱问知,怎么看均线k线入门图解教程。面对形形色色的K线组合,初学者不禁有

资讯

房地产的基础知识教程

阅读(19)

本文主要为您介绍房地产的基础知识教程,内容包括通俗简单的讲解一个房地产知识,最好举例说明

资讯

色彩基础知识书

阅读(21)

本文主要为您介绍色彩基础知识书,内容包括色彩入门看什么书,推荐一本色彩基础教学的书?,有关色彩的书籍推荐。本人的观点有两个,也就是有两个办法,第1个办法就一个字“练”不分黑白的练,不分冬夏的练,别人学到什么境界,什么水平,什么地步,你都不要

资讯

iqc绩效考核基础知识

阅读(40)

本文主要为您介绍iqc绩效考核基础知识,内容包括IQC绩效考核方面的资料,简述绩效考核的基本流程,QC绩效考核内容。企业的绩效体系设计步骤(绩效体系设计八步法):工作分析:工作分析是企业管理和人力资源管理的基础,通过工作分析,能得出各岗位的工作

资讯

重庆市公招综合基础知识题集

阅读(36)

本文主要为您介绍重庆市公招综合基础知识题集,内容包括重庆事业单位考试综合基础知识,重庆事业单位考试,公共基础知识题型,2012年重庆事业单位综合基础知识题型。您好,中公教育为您服务。给你分享一个公务员考试(http://gz.offcn.com?wt.mc_i

资讯

医院设备基础知识

阅读(41)

本文主要为您介绍医院设备基础知识,内容包括医院有那些基本的医疗设备?,医院设备?,医院主要设备?。您好,大型医疗设备分类有2种一个是甲类和有一个就是乙类,医鹭久歌大型医疗设备还不错!!您可以参考一下!!!下面是大型医疗设备甲乙的详细分

资讯

3dmax基础知识总结

阅读(38)

本文主要为您介绍3dmax基础知识总结,内容包括3dsmax理论知识,关于3DMAX的基础知识,3DMAX常识。放样: 1)建立放样路径和放样截面 2)单击放样命令 3)选择放样方式2、阴影产生条件:1)有实体面接收阴影2)灯光设置时,设置成产生阴

资讯

word基础知识及使用技巧

阅读(42)

本文主要为您介绍word基础知识及使用技巧,内容包括关于word的基本操作知识???,word的操作技巧,word基本操作入门。Word2003 基础入门教程 第一节 新建文件夹 Word是一个文字处理软件,属于微软的Office系列,国产的是金山WPS, 文字处

资讯

美容美发基础知识

阅读(43)

本文主要为您介绍美容美发基础知识,内容包括美发的基本理论知识,,,详细的,,,,,美发课堂手机软件里面视频怎么下载,美发专业知识。原发布者:q1054996438231美发基础知识1剪发基础知识 剪刀剪发的基本方法 男子发型剪刀剪发的基本方法与女子基

资讯

模拟电路基础知识点总结

阅读(23)

本文主要为您介绍模拟电路基础知识点总结,内容包括模电基础知识,模拟电路基础知识,模拟电路基础知识是什么?。直流放大系数=IC/IB,就是集电极电流除以基极电流(直流电流)当IC=1mA时,对应的IB=10μA,这时的直流电流放大系数=1mA/

资讯

经济法相关基础知识

阅读(28)

本文主要为您介绍经济法相关基础知识,内容包括经济法基础重点有什么?,经济法基础考试重点要点考点,初级会计考试经济法基础考点?。经济法基础重点在于:经济法概论(1)法和经济法的概念(2)经济纠纷的解决途径(3)违反复经济法的法律责任2、会计

资讯

体育健康基础知识理论

阅读(25)

本文主要为您介绍体育健康基础知识理论,内容包括体育健康知识,体育基础理论包括哪些?,体育与健康理论知识。去百度文库,查看完整内容> 内容来自用户:凤凰涅槃 体育运动对于人体的不同方面都会产生很大的影响,包括神经系统、运动系统、心血管系

资讯

2017历史基础知识

阅读(24)

本文主要为您介绍2017历史基础知识,内容包括2017中山大学考研619历史学基础(A)复习指南,近现代史可以用吧,2017历史学考研应该怎样复习,2017年中央民族大学历史学考研真题怎么考。考研的复习,专业课必不可少的,但是如果在历史专业课上花太多的

资讯

声母的基础知识

阅读(22)

本文主要为您介绍声母的基础知识,内容包括声母的相关知识点,语文基础知识声母一共有多少个?分别是什么?,声母是什么。声母,是使用在韵母前面的辅音,跟韵母一齐构成的一个完整的音节。其他汉藏语系语言也有类似的结构。一般由辅音充当,即首辅音

资讯

均线基础知识教程

阅读(26)

本文主要为您介绍均线基础知识教程,内容包括谁懂比特币k线图基础知识图解,每个线代表的是什么意思,要详细的,股票k线图入门图解视频教程,新手学炒股,看什么书比较好?爱问知,怎么看均线k线入门图解教程。面对形形色色的K线组合,初学者不禁有

资讯

房地产的基础知识教程

阅读(19)

本文主要为您介绍房地产的基础知识教程,内容包括通俗简单的讲解一个房地产知识,最好举例说明

资讯

车险基础知识要点

阅读(27)

本文主要为您介绍车险基础知识要点,内容包括车险基本知识,车险相关知识都呢?,私家车新手车险知识?。主险:1:机动车交通事故责任强制保险(交强险)属于新车必上险种,赔偿最高额度12。2万元。2:机动车损失险(车损险)也就是车辆保险中最重