
给你一个完整的代码,包括链表的创建,输出和求链表长度
#include <stdioh>
#include <stdlibh>
typedef struct node
{
int data;
struct node next;
}NODE,List;
void initList(List L)
{
L = NULL;
}
List createList()
{
List head, p, q;
int flag;
head = (List)malloc(sizeof(NODE));
head->next = NULL;
q = head;
printf("请输入节点的值,输入字母终值输入: ");
flag = scanf("%d", &q->data);
while(flag)
{
p = (List)malloc(sizeof(NODE));
printf("请输入节点的值: ");
flag = scanf("%d", &p->data);
q->next = p;
p->next = NULL;
q = q->next;
}
return head;
}
int listLength(List L)
{
int count = 0;
List p = L;
while (p->next != NULL)
{
p = p->next;
count++;
}
return count;
}
void displayList(List L)
{
printf("链表中的元素为:\n");
while (L->next != NULL)
{
printf("%d ", L->data);
L = L->next;
}
printf("\n");
}
void main()
{
List L;
L = createList();
printf("链表的长度为: %d\n", listLength(L));
displayList(L);
}
呵呵!楼主应该是名在校大学生哦!
上课一定没有认真听课哦!这可是数据结构链表中最简单的哦!呵呵!
答案如下(C++代码):
#include <iostreamh>
struct node
{
int data; //定义单链表的数据类型为INT型
node next; //next指针指向下一个数据元素
};
node head; //定义head为全局结构类型
void add() //由于篇幅问题没有设计捕错函数
{
int number;
head=new node;
node p,s; //p为总是指向最后元素的指针
p=head;
cout<<"输入数字('0'结束)";
while(number) //循环向表中输入数据直到‘0’结束
{
cin>>number;
if(number!=0)
{
s=new node;
s->data=number;
p->next=s;
s->next=NULL;
p=s;
}
else
{
number=0;
}
}
}
void list() //显示表中的元素(注意此表为带有头节点的链表)
{
node listtemp=head;
while(listtemp->next)
{
cout<<listtemp->next->data<<" ";
listtemp=listtemp->next;
}
}
void main()
{
add();
list();
delete head;
}
呵呵!以上仅供参考!不过楼主以后可要认真听课了哦!呵呵!毕竟知识还是自己的好!
#include<stdioh>
#include<stdlibh>
typedef struct _Node
{
int data;
_Node next;
}Node,List;
int getMax_Value(List head)
{
if (head->next == NULL)
{
printf("链表中没有节点\n");
exit(-1);
}
Node ptr = head->next;
int max = ptr->data;
while (ptr->next != NULL)
{
ptr = ptr->next;
if (ptr->data > max)
{
max = ptr->data;
}
}
return max;
}
Node getMax_Address(List head)
{
if (head->next == NULL)
{
printf("链表中没有节点\n");
exit(-1);
}
Node ptr = head->next;
Node max_address = ptr;
while (ptr->next != NULL)
{
ptr = ptr->next;
if (ptr->data > max_address->data)
{
max_address = ptr;
}
}
return max_address;
}
List creatList(int num)//num为创建节点个数
{
List head = (Node)malloc(sizeof(Node));
head->data = 0;
head->next = NULL;
Node ptr = head;
Node node = NULL;
int data;
while (num)
{
printf("请输入节点则值:");
scanf("%d", &data);
node = (Node)malloc(sizeof(Node));
node->data = data;
node->next = NULL;
ptr->next = node;
ptr = node;
head->data++;
num--;
}
return head;
}
void freeList(List head)
{
Node ptr = head;
while (head)
{
head = ptr->next;
free(ptr);
ptr = head;
}
}
int main()
{
List head=creatList(5);
printf("链表的最大值为:%d\n", getMax_Value(head));
printf("链表最大值的地址为:0x%x,%d\n", getMax_Address(head), (getMax_Address(head))->data);
freeList(head);
return 0;
}
你那个next需是指针,next,
h = (struct student )malloc(sizeof(struct student));int i=1;
p1 = p2 = h;
while(i<3)
{p1=p2;
p2=p1->next;
p2= (struct student )malloc(sizeof(struct student)
}
电视仓库 单向链表程序如下:
/
/
package comzhh;
import javautilScanner;
/
@author zh520qx
@version 100
@Since Oct 9, 2013
/
public class TVLinkList{//完成电视链表的类
class Node{//内部结点类
private String data;//定义data变量用于存储节点内容
private Node next;//保存下一节点
public Node(String data){//构造方法,设置节点内容
thisdata = data;
}
public void add(Node newNode){//将节点加入到合适的位置
if(thisnext ==null){//如果下一节点为空
thisnext = newNode;//则将节点放在next上
}else{//如果不为空
thisnextadd(newNode);//则需要继续向下查找next
}
}
public void print(){//打印出节点内容
Systemoutprint(thisdata + "\t");
if(thisnext!=null){//如果下一节点不为空
thisnextprint();//则继续调用print()方法打印出节点内容
}
}
public boolean search(String data){//查找节点内容
if(thisdata == null)
{
return false;
}
if(dataequals(thisdata)){//如果查找的节点与当前节点相同
return true;
}else{
if(thisnext!=null){//如果下一节点不为空
return thisnextsearch(data);//则继续向下查找
}else{
return false;
}
}
}
public void delete(Node pervious,String data){
if(thisdata == null)
{
return;
}
if(dataequals(thisdata)){//找到了匹配的节点
perviousnext = thisnext;//空出当前节点
}else{
if(thisnext!=null){
thisnextdelete(this,data);//进行继续查找
}
}
}
};
private Node root;//定义根节点
public void addNode(String data){//增加节点
Node newNode = new Node(data);//定义新的节点
if(thisroot == null){//如果根节点为空
thisroot = newNode;//将第一个节点设置为根节点
}else{//如果不为空
thisrootadd(newNode);//通过Node自动安排此节点的位置
}
}
public void printNode(){//输出链表中的全部内容
if(thisroot!=null){//如果根节点不为空
thisrootprint();//调用Node类的中输出 *** 作
}
}
public boolean contaits(String name){//判断元素是否存在
if(thisroot == null)
{
return false;
}
return thisrootsearch(name);//调用Node类中的查找方法
}
public void deleteNode(String data){
if(thiscontaits(data)){//判断查找的节点是否存在
if(thisrootdataequals(data)){
//一定要判断此元素是否与根元素相等
thisroot = thisrootnext;//将下一节点设置为根节点
}else{
thisrootnextdelete(root,data);//把下一节点的前一节点和数据一起传入进去
}
}
}
static Scanner scanner = new Scanner(Systemin);
static TVLinkList linkList = null;
public static void show()
{
print("===============百货商店·电视仓库系统===============", 1);
print("1、建立电视仓库", 1);
print("2、电视机查询", 1);
print("3、电视机入库", 1);
print("4、电视机出库", 1);
print("5、显示所有电视", 1);
print("6、退出系统", 1);
print("请选择 *** 作项:",2);
int action = scannernextInt();
switch (action)
{
case 1:
if(linkList == null)
{
linkList = new TVLinkList();
print("链表创建成功!", 1);
}else
{
print("链表已创建!", 1);
}
break;
case 2:
if(linkList == null)
{
print("请先创建链表!", 1);
}
else
{
print("请输入要查询的电视:", 2);
String s = scannernext();
if(linkListcontaits(s))
{
print(s + "电视有库存", 1);
}else
{
print(s + "电视不存在", 1);
}
}
break;
case 3:
if(linkList == null)
{
print("请先创建链表!", 1);
}
else
{
print("请输入要入库的电视:", 2);
String s = scannernext();
linkListaddNode(s);
print(s + "入库成功", 1);
}
break;
case 4:
if(linkList == null)
{
print("请先创建链表!", 1);
}
else
{
print("请输入要出库的电视:", 2);
String s = scannernext();
linkListdeleteNode(s);
print(s + "出库成功", 1);
}
break;
case 5:
if(linkList == null)
{
print("请先创建链表!", 1);
}
else
{
linkListprintNode();
print("", 1);
}
break;
case 6:
print("系统已退出", 2);
Systemexit(1);
break;
default:
break;
}
}
public static void print(String info,int flag)
{
if(flag == 1)
{
Systemoutprintln(info);
}
else
{
Systemoutprint(info);
}
}
public static void main(String[] args)
{
while(true)
{
show();
}
}
};
功能已经全部实现,具体你自己运行下程序, *** 作就知道了。
当然,如果真想派上用场,细节部分还得你自己优化。
有问题欢迎提问,吧!
以上就是关于如何编写一个计算单链表中结点个数程序全部的内容,包括:如何编写一个计算单链表中结点个数程序、编写打印出一个单链表的所有元素的程序,帮忙解决一下这个问题、C语言,编写程序。已知head指向一个带头结点的单向链表,链表中每个结点包含数据域(date)和指等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)