2016-10-29 12:51

# 单链表的基本操作 c语言

• 点赞
• 写回答
• 关注问题
• 收藏
• 复制链接分享
• 邀请回答

#### 3条回答

• PGEva 5年前

typedef struct node
{
int n;
struct node next;
}Node;
Node *create();
void main()
{
}
Node *create()
{
p1 = (Node
)malloc(sizeof(Node));
p1->next = NULL;
while(1 == scanf("%d",&p1->n))
{
else
p2->next = p1;
p2 = p1;
p1 = (Node*)malloc(sizeof(Node));
p1->next = NULL;
}
free(p1);
p1 = NULL;
}
{
while(p != NULL)
{
printf("%d ",p->n);
p = p->next;
}
printf("\n");
}
{
{
for(;p->next != NULL;p = p->next)
{
if(p->next->n < min->n)
{
min = p->next;
minf = p;
}
}
//2
{
}
else
{
newtail->next = min;
newtail = min;
}
//3
else
minf->next = min->next;
}
newtail->next = NULL;
}
{
Node *p = NULL,*pf = NULL,*pn = NULL;
p = pf->next;
pf->next = NULL;
while(p->next != NULL)
{
pn = p->next;
p->next = pf;
pf = p;
p = pn;
}
p->next = pf;
}

{
Node *p1,*p2;
while(p1 != NULL)
{
p1 = p1->next;
if(p1!=NULL)
{
p1 = p1->next;
p2 = p2->next;
}
}
}

#endif

typedef struct data
{
int n;
struct data next;
struct data *front;
}Node;
#if 0
Node *create()
{
p1 = (Node
)malloc(sizeof(Node));
p1->next = NULL;
while(1 == scanf("%d",&p1->n))
{
else
p2->next = p1;
p2 = p1;
p1 = (Node*)malloc(sizeof(Node));
p1->next = NULL;
}
free(p1);
p1 = NULL;
}
{
do
{
printf("%d ",p->n);
p = p->next;
printf("\n");
}
#endif

Node create()
{
p1 = (Node
)malloc(sizeof(Node));
p1->next = NULL;
p1->front = NULL;
while(1 == scanf("%d",&p1->n))
{
else
{
p2->next = p1;
p1->front = p2;
}
p2 = p1;
p1 = (Node*)malloc(sizeof(Node));
p1->next = NULL;
p1->front = NULL;
}
free(p1);
p1 = NULL;
}
{
Node *p = head,*p1 = NULL;
while(p != NULL)
{
p1= p;
printf("%d ",p->n);
p = p->next;
}
printf("\n");
while(p1 != NULL)
{
printf("%d ",p1->n);
p1 = p1->front;
}
printf("\n");
}
int main()
{
return 0;
}
看不懂的话可以私我

点赞 评论 复制链接分享
• m0_51481737 6月前

#include
#include
//结构体
struct Node{

int data;

struct Node* next;
};
//创建链表
struct Node* createList(){
}
// 创建结点

struct Node* createNode(int data){
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = data;
newNode->next=NULL;
return newNode;

}
//打印
while(pMove){
printf("%d",pMove->data);
pMove = pMove->next;
}
printf("\n");
}
//头部插入 插入结点 参数；插入那个结点，插入结点的数据是多少
//创建插入的结点
struct Node* newNode = createNode(data);
} //删除结点
if(posNode==NULL) //posNode指定位置
printf("链表为空\n"); //posNodeFront 指定位置前面

else{

`````` while(posNode->data!=posData){
posNodeFront=posNode;
posNode=posNodeFront->next;
if(posNode==NULL){
printf("没找到相关信息\n");
return;
}
``````

}
posNodeFront->next = posNode->next;
free(posNode);
}
}

int main(){
struct Node* list = createList();
printList(list);
deleteNodeByAppoin(list,2);
printList(list);
system("pause");
return 0;
}

点赞 评论 复制链接分享
• 追蜗牛的coder 5年前

1、查找

对单链表进行查找的思路为：对单链表的结点依次扫描，检测其数据域是否是我们所要查好的值，若是返回该结点的指针，否则返回null

因为在单链表的链域中包含了后继结点的存储地址，所以当我们实现的时候，只要知道该单链表的头指针，即可依次对每个结点的数据域进行检测

以下是应用查找算法的一个例子：

#include ＜stdio.h＞
#include ＜malloc.h＞
#include ＜string.h＞ /*包含一些字符串处理函数的头文件*/
#define n 10
typedef struct node
{
char name[20];
}stud;

stud * creat(int n) /*建立链表的函数*/
{
stud *p,*h,*s;
int i;
if((h=(stud *)malloc(sizeof(stud)))==null)
{
printf(\"不能分配内存空间!\");
exit(0);
}
h-＞name[0]=\'\0\';
p=h;
for(i=0;i＜n;i++)
{
if((s= (stud *) malloc(sizeof(stud)))==null)
{
printf(\"不能分配内存空间!\");
exit(0);
}
printf(\"请输入第%d个人的姓名\",i+1);
scanf(\"%s\",s-＞name);
p=s;
}
return(h);
}

stud * search(stud h,char *x) /查找链表的函数，其中h指针是链表的表头指针，x指针是要查找的人的姓名*/
{
stud p; /当前指针，指向要与所查找的姓名比较的结点*/
char y; /保存结点数据域内姓名的指针*/
while(p!=null)
{
y=p-＞name;
if(strcmp(y,x)==0) /*把数据域里的姓名与所要查找的姓名比较，若相同则返回0，即条件成立*/
return(p); /*返回与所要查找结点的地址*/
}
if(p==null)
printf(\"没有查找到该数据!\");
}

main()
{
int number;
char fullname[20];