1、编程实现单链表的建立、插入、删除和查找算法,语言采用C或JAVA等。

如题所述

/*P33用头插法建立带头结点的单链表*/
#include "stdio.h"
#define NULL 0
#define LEN sizeof(linklist)
typedef struct node
{int data;
struct node *next;
}linklist;
linklist *head;

void hhead_creat()/*用头插法建立带头结点的单链表*/
{int x;
linklist *p;
head=(struct node*)malloc(LEN);
head->data=-999;
head->next=NULL;
printf("\n\n\t\t请随机输入一组正整数以0作为结束符:\n\n\t\t");
scanf("%d",&x);
while(x!=0)
{ p=(struct node*)malloc(LEN);
p->data=x;
p->next=head->next;
head->next=p;
scanf("%d",&x);
}
}/*hrear_creat*/

void print_linklist(head)/*打印该链表*/
linklist *head;
{linklist *p;
int n=0;
p=head->next;
printf("\n\n\t\t");
while(p!=NULL)
{ printf("%5d",p->data);
p=p->next; n=n+1;
if((n+1)%10==0) printf("\n\t\t");
}
}/*print_linklist*/

main()
{hhead_creat(head);
print_linklist(head);
}

参考资料:《数据结构》田鲁怀编写 电子工业出版社(本人编写的书)

温馨提示:内容为网友见解,仅供参考
第1个回答  2008-12-20
sdgfn;ksdg
第2个回答  2020-07-06
sdgfn;ksdg
再看看别人怎么说的。

...插入、删除和查找算法,语言采用C或JAVA等。
typedef struct node {int data;struct node *next;}linklist;linklist *head;void hhead_creat()\/*用头插法建立带头结点的单链表*\/ {int x;linklist *p;head=(struct node*)malloc(LEN);head->data=-999;head->next=NULL;printf("\\n\\n\\t\\t请随机输入一组正整数以0作为结束符:\\n\\n\\...

怎样编写一个完整的程序,实现单链表的建立、插入、删除、输出等基本操...
typedef int Elemtype;typedef int status;define OVERFLOW -2 define OK 1 define ERROR -1 include "stdio.h"include "stdlib.h"typedef struct LNode { Elemtype data;struct LNode *next;}*linklist;\/\/构造链表 void Create_Linklist(linklist &L){ linklist p;p=(linklist)malloc(sizeo...

c语言 链表操作:建立,显示及节点的插入,删除
void CreateList_L(LinkList &L, int n) \/\/ 算法2.11 { \/\/ 逆位序输入(随机产生)n个元素的值,建立带表头结点的单链线性表L LinkList p;int i;L = (LinkList)malloc(sizeof(LNode));L->next = NULL; \/\/ 先建立一个带头结点的单链表 for (i=n; i>0; --i){ p = (...

实验 写一个包含链表的初始化、插入、删除、查找等基本操作的程序
list(){head=NULL;} void Insertlist(int aDate,int bDate);\/\/链表结点的插入 void Deletelist(int aDate);\/\/链表结点的删除 void Outputlist();\/\/链表结点的输出 Node *Gethead(){return head;} };void list::Outputlist(){ Node *current=head;while(current!=NULL){ cout<<current->Da...

用java如何创建一个单链表和双链表
单向链表插入结点过程:源代码中的的插入结点函数我设置了一个指定位置,就是在指定位置插入结点。首先,通过位置变量position让ptemp结点移动到要插入位置的前一个位置,然后接下来的过程就是和创建链表的过程是一样的,把新建的结点添加到ptemp的后面。这里变量position可以从1到链表长度加1,意思就是如果...

用C++完成实验 单链表的建立及基本操作
\/* 清空单链表 *\/ void LinkedListClear(LinkedList L){ L->next=NULL;} \/* 检查单链表是否为空 *\/ int LinkedListEmpty(LinkedList L){ if (L->next==NULL) return TRUE;else return FALSE;} \/* 遍历单链表 *\/ void LinkedListTraverse(LinkedList L){ LinkedList p;p=L->next;while (p...

用C语言实现数据结构中常用算法,如对链表的操作、查找、排序等。
while(p->next&&jnext;++j;} q=p->next;p->next=q->next;e=q->date;free(q);cout<<"链表已经删除\\n";return 1;} \/\/\/ \/\/\/ \/\/ \/*插入结点*\/\/\/ \/\/\/ int listinsert(link &L,int i,ElemType e){ link p,q;int j;p=L;j=0;while(p&&jnext;++j;} q= (link)malloc(...

关于全国计算机二级考试内容的问题
二级可以从VFP,c语言,java,c++,vb,access,任选一科,考过即可,无论考哪一颗都要考二级公共基础知识。85元 公共基础知识 基本要求 1.掌握算法的基本概念。 2.掌握基本数据结构及其操作。 3.掌握基本排序和查找算法。 4.掌握逐步求精的结构化程序设计方法。 5.掌握软件工程的基本方法,具有初步应用相关技术进行软件...

怎样C++实现线性表的建立、插入、删除、倒序?
int LocateList(SeqList L,DataType newelem); \/\/在无序顺序表L中查找元素newelem的位置 void InsertList(SeqList *L,DataType newelem,int position); \/\/在顺序表L中插入元素newelem,位置为position void DeleteList(SeqList *L,int position); \/\/在顺序表L中删除位置为position的元素 void Sort1List(Seq...

...使插入后该链表仍然有序。(请用java语言写)
} 解释:如果原链表为空,直接插入新结点为head;如果原链表只有头结点,插入新节点在head.next位置。大于两个结点时,遍历有序的链表直到找到一个比新节点大的结点,把新节点插在他前面。那个inserted的作用是,如果遍历完整个链表,没有比新节点大的,这时候inserted还是false,所以把新节点插在最后。

相似回答
大家正在搜