當前位置:首頁 » 編程語言 » c語言去除相鄰重復項
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言去除相鄰重復項

發布時間: 2022-03-14 03:38:16

『壹』 如何去除重復字元c語言

#include<stdio.h>
int main(void)
{
char s[100];
int i, j, n, k;
printf("請輸入一串有重復字元的字元串:\n");
gets(s);
for (n = 0; s[n] != '\0'; n++) ;
for (i = 0; i < n; i++)
{
for (j = k = i + 1; j < n; j++)
if (s[j] != s[i])
s[k++] = s[j];
s[k] = '\0';
}
printf("去掉重復字元後結果為:\n");
puts(s);
}

『貳』 C語言編寫一個函數,將字元串中連續重復出現的字元去除

展開全部
C語言自定義函數,一次性去除連續重復字元,參考代碼如下:
#include
char
*fun(char
*str)
{
int
i=1,j=0;
if(str==NULL)
return
NULL;
if(str[0]==0)
return
str;
while(str[i]!=0)
if(str[j]!=str[i])
str[++j]=str[i++];
else
++i;
str[j+1]=0;
return
str;
}
int
main()
{
char
str[500];
gets(str);
puts(fun(str));
return
0;
}

『叄』 怎麼刪除相鄰的重復項所在的行而不刪除其他不相鄰的行所在的列

你的重復項所在的行安不上,主題他不相離的行鎖在這里。這個問題該怎麼給你解?

『肆』 C語言刪除一個整型數組裡面重復的元素

利用雙重循環,將每個值依次與其後面的值相比較,如果有相同的則刪除該元素即可。

刪除時,可以使用將後面元素依次向前移動一位,同時總長度減一的方式。

參考代碼如下:

intremove_repeat(int*a,intl)
{
inti,j,k;

for(i=0;i<l;i++)
{
for(j=i+1;j<l;j++)//對後面每個元素比較,去重。
{
if(a[j]==a[i])//發現重復元素。
{
for(k=j+1;k<l;k++)//依次前移一位。
a[k-1]=a[k];
l--;//總長度減一。
}
}
}

returnl;//返回新的長度值。
}

『伍』 c語言刪除重復數據

程序的基本思路是把輸入的字元串放到a[100]字元組中,然後把a[100]中所有不重復的字元添加到b[100]中,間接完成對字元串中的重復字元的刪除

#include<stdio.h>
void main()
{
char a[100],b[100];
//定義兩個字元組,a[100]用來接收輸入的字元串,b[100]用來存儲不重復的字元
int pa=0,pb=0,i,flag;
scanf("%s",a);
//輸入字元串到a[100]中,用scanf讀入到a[100]中會自動在a[100]中字元串結束的地方加上'\0'
for(pa=0;a[pa]!='\0';pa++)
//for循環結束的條件是a[pa]==0,也就是從a[100]字元組中讀取一個字元,直到沒有
{
flag=1;
//flag是個標志符,當flag==1時,說明這個字元(下句中的a[pa])是第一次出現,應該加入到b[100]中
//如果flag==0,說明這個字元(下句中的a[pa])重復了,不應該加到b[100]中
for(i=0;i<pb;i++) if(b[i]==a[pa]) flag=0;
//把a[100]中讀取的字元a[pa]與b[100]中的所有字元進行比較,如果b[i]==a[pa]
//說明這個字元已經在b[100]中了,也就是重復字元了,所有將flag=0,不能加入b[100]中
//如果a[pa]與b[100]中的所有字元都不相等,說明這個字條是第一次出現,應該加到b[100]
if(flag)
{
b[pb]=a[pa];pb++;
}
//如果flag==1,則將a[pa]這個字元加入到b[100]中,然後將pb加1
}
b[pb]='\0';
//當所有的不重復的字元都加入到b[100]中時,將b[100]中字元結束的地方加'\0',也就是b[pb]='\0'
//因為字元串都是民'\0'結尾的,所以加上這句
printf("%s\n",b);
//輸出b[100]中的字元串,也就是刪除過重復字元之後的了
}

『陸』 c語言棧的應用輸入一個字元串,刪除其中相鄰的兩個相同字元

#include<stdio.h>

int main(){

char s[1000];

int i=0;

scanf("%c",&s[i]);

while(s[i]!=' '){

scanf("%c",&s[++i]);

if(s[i]==s[i-1])

i-=2;

}

s[i]='';

if(s[0])puts(s);

else printf("None");

}

『柒』 c語言刪除數據中重復的值

int temp=0;
int same=0;
for(int i=0;i<num;i++)
{
for(int j=0;j<=temp;j++)
{
if(strTemp[i].compare(strReturn[j]))
{
same=1;
}
}
if(same==1)
{
same=0;
strReturn[++temp]=strTemp[i];
}
}
最後的strReturn 保存的就是你要的東西,簡單寫了一下
有些細節 你自己琢磨一下吧

『捌』 c語言鏈表 刪除相同的元素值

你只是對相鄰的元素進行比較,所以只能刪除相鄰且相同的元素。如果按照你的思想,則要先經排序後的鏈表,再執行Puge(L)才能刪除鏈表中所有的相同的元素。
以下是我寫的一個鏈表排序(冒泡法):
/*單鏈表排序(mark=1,降序;mark=0,升序)*/
void SortList(LNode *L,int mark)
{
int i,j,change=TRUE;
ElemType temp;
LNode *p=L->next,*q;
if(p && (p->next)) //如果單鏈表長度<2,則不用排序
{
for(j=1;j<L->data && change;j++)
{
change=FALSE;
p=L->next;
q=p->next;
for(i=0;i<L->data-j;i++)
{
if((q->data>p->data && mark) || (q->data<p->data && (!mark)))
{
temp=p->data;
p->data=q->data;
q->data=temp;
change=TRUE;
}
p=q;
q=q->next;
}
}
}
printf("排序成功\r\n");
}
/*刪除鏈表中相同的數據項(基於排序)*/
void DelSameItem(LNode *L)
{
LNode *p,*q;
SortList(L,0);
p=L;
q=L->next;
while(q)
{
if(p->data==q->data)
{
q=q->next ;
p->next =q;
}
p=p->next ;
q=q->next ;
}
}

『玖』 c語言程序要求指定刪除字元串中的重復項

C語言實現如下:
#include<stdio.h>
#include<string.h>
void main()
{
char c[1000];
int f[1000],max=0,len,n=0,m[256]={0},i;
gets(c);

『拾』 C語言刪除相同結點問題

p1釋放掉以後,循環體里的p1=p1->next執行不下去了,稍微改下:

TeleBook *DeleteSame(TeleBook *head)
{
TeleBook *p,*p1,*temp;
for(p=head->next;p!=NULL;p=p->next)
for(temp=p,p1=p->next;p1!=NULL;p1=temp->next) //這里修改
if( (strcmp(p1->name,p->name)==0) && (strcmp(p1->phonenum,p->phonenum)==0) && (strcmp(p1->email,p->email)==0) )
{
temp->next=p1->next;
free(p1);
}
else

{

temp = temp->next;

}

printf("重復項清理完畢!\n");
return(head);