//鏈表中插入資料元素x保持原有升序保持不變
#include<stdio.h> #include<malloc.h>
typedef int DataType;
//定義 一個鏈表
typedef struct Snode
{
DataType data; //鏈表是由一個一個的節點群組成,如果有頭指標的話沒有data域只有next域
struct Snode *next; //用來存放前端節點的地址。
}Lnode; // 每個節點有資料域和指標域後者存放下個節點的地址,如果指著域為空白的話就是最後一個節點
void ListInsert(Lnode *head,DataType x)
{
int i;
Lnode *L ,*S,*P;
P=head;
L=head->next;
while(L->next!=NULL&&L->data<=x)
{ //L->next=NULL;說明是後面沒有元素,說明也就是最後一個元素
P=L; //要插入的地方
L=L->next; //L指向下一個節點,指標域裡存放著下一個節點的地址
}
//申請一個節點插入資料
S=(Lnode*)malloc(sizeof(Lnode));
S->data=x;
S->next=P->next;
P->next=S;
}
//在鏈表中就地逆置
#include<stdio.h>
typedef int DataType;
typedef struct snode
{
DataType data;
struct snode *next;
}lnode;
void Listr(lnode *head) //定義的結構體類型指標中存放的是在主函數中定義的結構體指標的值
{
lnode *p,*q;
p=head->next; // 這裡形成了一個以p為頭結點的鏈表
head->next=NULL; //頭指標不指向任何元素,也就是head所指結構體的next域為null.
while(p!=NULL) //遍曆這個新鏈表
{
q=p;
p=p->next; //往後移 一個 , 也就是形成一個新鏈表
q->next=head->next; //首次是空,而第二次的時候就是在原有q之前添加新q指向原有的q
head->next=q; //頭指標指向q
}
}