单链表的创建(创建单链表 1.定义结构体 2创建单链表以#结束 3.输入单链表内容L=(2,4,5,6,7)输出)

本文目录
- 创建单链表 1.定义结构体 2创建单链表以#结束 3.输入单链表内容L=(2,4,5,6,7)输出
- 数据结构C语言单链表的创建,插入删除和合并程序代码
- 创建一个带头结点的单链表,分别用前插法和后插法创建单链表这个怎么弄
- c语言用函数创建单链表
- 如何创建有N个节点的单链表
创建单链表 1.定义结构体 2创建单链表以#结束 3.输入单链表内容L=(2,4,5,6,7)输出
#include《stdio.h》
#include《stdlib.h》
typedef struct Node{
char data;
struct Node* next;
}Node, *pNode;
int main()
{
pNode pHead = (pNode)malloc(sizeof(Node));
pHead-》next = NULL;
pNode pTemp = pHead, p = NULL;
char temp = 0;
scanf("%c",&temp);
while(temp != ’#’){
pTemp-》data = temp;
pTemp-》next = (pNode)malloc(sizeof(Node));
pTemp = pTemp-》next;
pTemp-》next = NULL;
scanf("%c",&temp);
}
pTemp = pHead;
p = pHead;
while(pTemp-》next){
printf("%c",pTemp-》data);
pTemp = pTemp-》next;
free(p);
p=pTemp;
}
free(pTemp);
return 0;
}
数据结构C语言单链表的创建,插入删除和合并程序代码
你看这个应该满足要求吧。我把三种循环方式都用上了:
#include《stdio.h》
#include《math.h》
int isprime(int n)
{
int i,t;
if(n==2)
return 1;
if(n%2==0 || n《2)
return 0;
for(i=3,t=(int)sqrt(n);i《=t;i+=2)
{
if(n%i==0)
return 0;
}
return 1;
}
void main()
{
int i,a,n;
i=0;
do
{
printf("Input an integer (》=1):");
scanf("%d",&a);
if(a》=1)
break;
}while(++i《3);
if(i==3) exit(0);
printf("prime submultiples:\n");
i=1;
n=0;
while(i《=a)
{
if(a%i==0)
if(isprime(i))
{
printf("%d ",i);
n++;
if(n%10==0)
printf("\n");
}
i++;
}
创建一个带头结点的单链表,分别用前插法和后插法创建单链表这个怎么弄
#include 《stdio.h》
#include 《stdlib.h》
typedef struct node
{
int val;
struct node *next;
}NODE;
NODE *create_linklist(int len,int *a)
{
int i;
NODE *p = (NODE *)malloc(sizeof(NODE));
NODE *head = p;
NODE *q = NULL;
for (i = 0; i 《 len; ++i){
q = (NODE *)malloc(sizeof(NODE));
q-》val = *(a+i);
p-》next = q;
p = q;
}
p-》next = NULL;
return head;
}
NODE *find_in_linklist(NODE *pnode,int val)
{
NODE *p = NULL;
if (!pnode-》next){
return NULL;
}
p = pnode-》next;
while(p){
if(val == p-》val){
return p;
}
p = p-》next;
}
return NULL;
}
int delete_node(NODE *pnode,NODE *pdel)
{
NODE *p = pnode-》next;
NODE *q = pnode;
while(p){
if (p == pdel){
q-》next = p-》next;
free(p);
return 1;
}
p = p-》next;
q = q-》next;
}
return 0;
}
void print_linklist(NODE *pnode){
NODE *p = pnode-》next;
while(p){
printf("%d ", p-》val);
p = p-》next;
}
printf("\n");
}
int main(int argc, char const *argv)
{
/* code */
int a = {1,2,3,5};
NODE *p = create_linklist(4,a);
NODE *q = find_in_linklist(p,2);
print_linklist(p);
if(q){
if(delete_node(p,q)){
printf("delete successful!\n");
}
else{
printf("delete failed!\n");
}
}
print_linklist(p);
return 0;
}
c语言用函数创建单链表
#include《stdio.h》
#include《stdlib.h》
//链表定义
typedef int ElemType;
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
/*************************************
* 链表函数 *
*************************************/
//链表初始化
void InitLink(LinkList &L);
//创建函数,尾插法
void CreateLink_T(LinkList &L,int n);
//创建函数,头插法
void CreateLink_H(LinkList &L,int n);
//销毁函数
void DestroyLink(LinkList &L);
//判断是否为空函数
bool EmptyLink(LinkList &L);
//获取函数
bool GetLink(LinkList &L,int i,int & e);
//插入函数
void InsertLink(LinkList &L,int i,int e);
//删除函数
void DeleteLink(LinkList &L,int i,int &e);
//遍历函数
void TraverseLink(LinkList &L);
//链表长度函数
int LengthLink(LinkList &L);
//合并函数
void MergeLink(LinkList &L1,LinkList L2);
void main()
{
LinkList L1,L2;
InitLink(L1);
InitLink(L2);
CreateLink_H(L1,2);
CreateLink_T(L2,2);
TraverseLink(L1);
printf("\n");
TraverseLink(L2);
printf("\n");
MergeLink(L1,L2);
TraverseLink(L1);
TraverseLink(L2);
}
//创建函数,尾插法
void InitLink(LinkList &L)
{
L=(LinkList)malloc(sizeof(LNode));
if (!L)
{
printf("Init error\n");
return;
}
L-》next=NULL;
}
void CreateLink_T(LinkList &L,int n)
{
if(n《1)
{
printf("n must 》=1\n");
return ;
}
else
{
// L=(LinkList)malloc(sizeof(LNode));
L-》next=NULL;
for(int i=0;i《n;i++)
{
LinkList p=(LinkList)malloc(sizeof(LNode));// the lower letter p
printf("enter the data :\t");
scanf("%d",&(p-》data));
p-》next=L-》next;
L-》next=p;
}
}
}
//创建函数,头插法
void CreateLink_H(LinkList &L,int n)
{
if (n《1)
{
printf("n must 》=1\n ");
return;
}
else
{
//L=(LinkList)malloc(sizeof(LNode));
LinkList pre=(LinkList)malloc(sizeof(LNode));
L-》next=NULL;
pre=L;
for(int i=0;i《n;i++)
{
LinkList p=(LinkList)malloc(sizeof(LNode));
printf("enter the data:\t");
scanf("%d",&(p-》data));
pre-》next=p;
pre=p;
}
pre-》next=NULL;
}
}
//销毁函数
void DestroyLink(LinkList &L)
{
LinkList q=L,p=L;
while (p)
{
q=p;
p=p-》next;
free(q);
}
L-》next=NULL;
}
//判断是否为空函数
bool EmptyLink(LinkList &L)
{
if (NULL==L-》next)
{
return true;
}
else
{
return false;
}
}
//获取函数
bool GetLink(LinkList &L,int i,int& e)
{
if (i《1)
{
return false;
}
else
{
if (EmptyLink(L))
{
return false;
}
LinkList p=L-》next;
int j=1;
while(p&&j《i)
{
p=p-》next;
j++;
}
if (!p||j》i)
{
return false;
}
else
{
e=p-》data;
return true;
}
}
}
//插入函数
void InsertLink(LinkList &L,int i,int e)
{
if (i《0||i》LengthLink(L))
{
printf("Insert error\n");
return;
}
else
{
LinkList p=L;
int j=0;
while(p&&(j《i))
{
p=p-》next;
j++;
}
if (!p||j》i)
{
printf("Insert error\n");
return;
}
else
{
LinkList q=(LinkList)malloc(sizeof(LNode));
q-》data=e;
q-》next=p-》next;
p-》next=q;
}
}
}
//删除函数
void DeleteLink(LinkList &L,int i,int &e)
{
if(i《=0||i》LengthLink(L))
{
printf("delete error\n");
return;
}
else
{
LinkList p=L;
int j=0;
while(p&&j《i-1)
{
p=p-》next;
j++;
}
if(!p||j》i)
{
printf("please enter i again\n");
return;
}
else
{
LinkList q=p-》next;
e=p-》next-》data;
p-》next=p-》next-》next;
free(q);
}
}
}
//遍历函数
void TraverseLink(LinkList &L)
{
LinkList p=L-》next;
if(!p)
{
printf("the Link L is empty\n");
}
while(p)
{
printf("%d\n",p-》data);
p=p-》next;
}
}
//链表长度函数
int LengthLink(LinkList &L)
{
int i=0;
LinkList p=L-》next;
while(p)
{
p=p-》next;
i++;
}
return i;
}
//合并函数
void MergeLink(LinkList &L1,LinkList L2)
{
int i=0,flag=0;
LinkList p1=L1-》next,p2=L2-》next;
LinkList p=(LinkList)malloc ((LengthLink(L1)+LengthLink(L2)+2)*sizeof(LNode));
LinkList pre=p;
if (!p)
{
printf("MergeLink error\n");
return;
}
p-》next=NULL;
while (p1&&p2)
{
if (p1-》data》=p2-》data)
{
InsertLink(p,i++,p2-》data);
p2=p2-》next;
}
else
{
InsertLink(p,i++,p1-》data);
p1=p1-》next;
}
}
while (p1)
{
InsertLink(p,i++,p1-》data);
p1=p1-》next;
}
while(p2)
{
InsertLink(p,i++,p2-》data);
p2=p2-》next;
}
while(pre)
{
pre=pre-》next;
}
LinkList q=L1;
L1=p;
DestroyLink(q);
DestroyLink(L2);
}
如何创建有N个节点的单链表
#include 《stdio.h》
#include 《stdlib.h》
//类型定义typedef在使用的时候如果直接按下面的方式定义,是错误的:
/*typedef struct Node
{
int data;
Node * next;
};
*/
//应该定义为:
typedef struct node
{
int data;
struct node * next;
}Node;
/*宏定义的后面一定“不能”有分号“;”*/
#define LEN sizeof(Node)
#define NULL 0
main()
{
Node* create(int n);
Node* p;
p = create(3);
while(p != NULL)
{
printf("%d, ",p-》data);
p = p-》next;
}
printf("\n");
}
Node* create(int n)
{
int i;
//定义指针变量时,下面的定义方式是错误的:
//node* head, p1, p2;
Node *head, *p1, *p2;
//head = p2 = NULL;
for(i=0;i《n;i++)
{
p1 = (Node*)malloc(LEN);
printf("Please input the data of your node: \n");
scanf("%d",&p1-》data);
if(i==0)
p2 = head = p1;
else
{
p2-》next = p1;
}
p1-》next = NULL;
p2 = p1;
}
return head;
}

更多文章:
checked in(check in和check out的区别)
2026年9月7日 01:20
java经典上机编程题(java上机题 请问这道题应该怎么写)
2026年9月7日 01:10
影视剧中有哪些剧情颠覆了你的三观?金庸的武侠小说《白马啸西风》为什么没有被拍成电影或者电视剧
2026年9月7日 00:30
mysql varchar和char的区别(mysql中char、varchar、nvarchar区别)
2026年9月7日 00:10
linux命令的选项和参数(linux为什么要有参数和选项)
2026年9月6日 20:20
perseverance的意思(preseverance的意思)
2026年9月6日 18:30
react native和uniapp(h5和uniapp和react性能)
2026年9月6日 18:00
mysql查看有哪些表(在mysql里面怎么查看数据库里面有多少表)
2026年9月6日 17:40
parsefloat()(html里的parsefloat什嘛意思)
2026年9月6日 16:30


